• day11MySQL基础


    数据库(在date目录下创建一个文件夹)
    创建数据库
    creat datebase db
    进入数据库
    use db

    数据表
    创建表
    create table tb(
    id int not null auto_increment primary key,
    name char(20),
    age int default 18,
    gender char(1)
    )engine=innodb default charset=utf8;
    1.列名
    2.数据类型 char类型是字符个数
    3.是否可以为空 null/not null
    4.默认值 default
    5.自增(一个表只能有一个自增列) auto_increment
    6.主键:
    约束:不能为空,不能重复,primary key
    索引:加速查找,只要表中有主键,就会再创建一个文件,以其他格式顺序存储
    7.engine=innodb引擎,支持事物,回滚
    8.字符编码
    一对多: 多表
    create table user(
    id int not null auto_increment primary key,
    name char(20),
    age int default 18,
    gender char(1),
    department_id int,
    constraint xxxxxxx foreign key (department_id) references department(id)

    )engine=innodb default charset=utf8;


    create table department(
    id int not null auto_increment primary key,
    title char(32)
    )engine=innodb default charset=utf8;
    1.外键约束,某一列数据是另外一张表中列里面已经存在的值

    插入
    insert into tb(name,age,gender)values('alex',19,'男')
    删除
    drop tb
    多对多:
    create table boy(
    id int not null auto_increment primary key,
    name char(32)
    )engine=innodb default charset=utf8;

    create table girl(
    id int not null auto_increment primary key,
    name char(32)
    )engine=innodb default charset=utf8;

    create table relationship(
    id int not null auto_increment primary key,
    girl_id int,
    boy_id int,
    constraint b_id foreign key(boy_id) references boy(id)
    constraint g_id foreign key(girl_id) references girl(id)
    )engine=innodb default charset=utf8;

    1.relationship关系表
    2.应用场景:

    数据行


    pymysql
    1.cursor
    import pymysql
    conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='root',database='new',charset='utf8')#建立连接,能去=取到内容
    cursor = conn.cursor()#去数据库返回的结果集 取数据,是一个指针
    v=cursor.execute("select * from student")#写sql语句,返回值是受影响的行数
    print(v) #输出 3
    result = cursor.fetchall()#行里面具体的数据
    result1=cursor.fetchone()#取一条数据,相当于迭代器,取过一次就取不出来了
    cursor.fetchmany(2)#取n条数据
    print(result)
    print(result1)
    2.sql注入
    user = input("用户名:")
    pwd = input("密码:")
    conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='root',database='new',charset='utf8')#建立连接,能去=取到内容
    cursor = conn.cursor()#去数据库返回的结果集 取数据,是一个指针
    sql = 'select * from userinfo where username="%s" and password="%s"' %(user,pwd)
    v=cursor.execute(sql)#写sql语句,返回值是受影响的行数
    #print(v) #输出 3
    result = cursor.fetchall()#行里面具体的数据

    用户如果输入
    用户名:ee" or 1=1 --
    密码:
    输出结果
    ((1, 'dodo', '123'), (2, 'www', '111'))


    解决方法
    v=cursor.execute('select * from userinfo where username=%s and password=%s',[user,pwd])#写sql语句,返回值是受影响的行数,加上后面的参数

    3.改,删,增,要提交
    v = cursor.execute('insert into userinfo(username,password) values(%s,%s)',['alex','000'])
    conn.commit()#增,改,删,不提交是不会生效的

    4.获取新数据的自增id
    cursor.execute('insert into class(caption) values(%s)',['一年一班'])
    new_id = cursor.lastrowid
    cursor.execute('insert into student(sname,gender,class_id) values(%s,%s,%s)',['明明','男',new_id])
    conn.commit()#增,改,删,不提交是不会生效的

    5.字典的形式输出查询结果
    conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='root',database='new',charset='utf8')#建立连接,能去=取到内容
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#不是元组形式,变成字典的形式
    cursor.execute('select * from class')
    result = cursor.fetchall()
    print(result)

    cursor.close()
    conn.close()




  • 相关阅读:
    Cocos2d-js官方完整项目教程翻译:六、添加Chipmunk物理引擎在我们的游戏世界里
    linux coreseek-4.1安装
    8个必备的PHP功能开发
    LINUX 下mysql导出数据、表结构
    PHP缩略图类
    PHP文件上传类
    PHP抓取页面的几种方式
    MySQL性能优化的最佳20+条经验
    zend studio9.0.3破解及汉化 windons版
    【转载】【面试经验】PHP中级面试题
  • 原文地址:https://www.cnblogs.com/doudouzheng/p/7172933.html
Copyright © 2020-2023  润新知