当前位置:Gxlcms > 数据库问题 > 数据库

数据库

时间:2021-07-01 10:21:17 帮助过:8人阅读

11) NOT NULL AUTO_INCREMENT, pid int(11) not NULL, num int(11), primary key(nid,pid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; create table t6( id int auto_increment primary key, name char(10), id1 int, id2 int,CONSTRAINT fk_t5_t6 foreign key (id1,id2) REFERENCES t5(nid,pid) )engine=innodb default charset=utf8; desc t5; show create table t5;看表是怎么创建的(sql语句) show create table t5 \G;竖着看 alter table t5 set AUTO_INCREMENT=1;设置自增起始值 MySQL 步长,基于会话 sqlserver 基于表 show session variables like auto_inc%;查看步长 set session auto_increment_increment=2;设置步长 show global variables like auto_inc%;查看全局步长 set global auto_increment_increment=2;不推荐 唯一: 约束不能重复(可以为空) PS: 主键不能重复(不能为空) 加速查找 create table t1( id int ...., num int, xx int, unique 唯一索引名称 (列名,列名), 联合唯一,两列间不能重复 constraint .... ) 一对一 create table userinfo1( id int auto_increment primary key, name char(10), gender char(10), email varchar(64) )engine=innodb default charset=utf8; create table admin( id int not null auto_increment primary key, username varchar(64) not null, password VARCHAR(64) not null, user_id int not null, unique uq_u1 (user_id), CONSTRAINT fk_admin_u1 FOREIGN key (user_id) REFERENCES userinfo1(id) )engine=innodb default charset=utf8; 多对多 示例1: 用户表 相亲表 示例2: 用户表 主机表 用户主机关系表 create table userinfo2( id int auto_increment primary key, name char(10), gender char(10), email varchar(64) )engine=innodb default charset=utf8; create table host( id int auto_increment primary key, hostname char(64) )engine=innodb default charset=utf8; create table user2host( id int auto_increment primary key, userid int not null, hostid int not null, unique uq_user_host (userid,hostid), CONSTRAINT fk_u2h_user FOREIGN key (userid) REFERENCES userinfo2(id), CONSTRAINT fk_u2h_host FOREIGN key (hostid) REFERENCES host(id) )engine=innodb default charset=utf8;

分组:
    
     select count(id),max(id),part_id from userinfo5 group by part_id;通过part_id进行分组,返回部门id一样的人数和部门id一样的人中id最大的那一个
     count
     max
     min
     sum
     avg

 **** 如果对于聚合函数结果进行二次筛选时?必须使用having ****
     select count(id) as count,part_id from userinfo5 group by part_id having count(id) > 1;

连表操作:

select * from userinfo5,department5 where userinfo5.part_id = department5.id;

select * from userinfo5 left join department5 on userinfo5.part_id = department5.id; 推荐使用
     # userinfo5左边全部显示

select * from department5 left join userinfo5 on userinfo5.part_id = department5.id;
select * from userinfo5 right join department5 on userinfo5.part_id = department5.id;
     # department5右边全部显示

#备份数据表结构+数据:mysqldump -u root db1 > db1.sql -p;转储数据库,备份,防黑客

#备份数据表结构:mysqldump -u root -d db1 > db1.sql -p;

import pymysql
cid=input(>>>)
user=input(>>>)
conn=pymysql.connect(host=localhost,user=root,password=‘‘,database=day61)
cursor=conn.cursor()  #游标,拿数据
sql="select * from app01_userinfo where id=‘%s‘and name=‘%s‘"%(cid,user) #不要自己写,会有sql注入       1" o r 1=1 --
cursor.execute(sql)
result=cursor.fetchone() #只显示一条
print(result)
cursor.close()
conn.close()
if result:
    print(登陆成功)
else:
    print(登陆失败)

 

import pymysql
cid=input(>>>)
user=input(>>>)
conn=pymysql.connect(host=localhost,user=root,password=‘‘,database=day61)
cursor=conn.cursor()  #游标,拿数据
sql="select * from app01_userinfo where id=%(c)s and name=%(u)s"
#cursor.execute(sql,[cid,user])
cursor.execute(sql,{c:cid,u:user})
result=cursor.fetchone() #只显示一条
print(result)
cursor.close()
conn.close()
if result:
    print(登陆成功)
else:
    print(登陆失败)

正确的写法,防注入

import pymysql
cid=input(>>>)
user=input(>>>)
conn=pymysql.connect(host=localhost,user=root,password=‘‘,database=day61)
cursor=conn.cursor()  #游标,拿数据
sql="insert into app01_userinfo (id,name) values (%s,%s)"
cursor.execute(sql,(cid,user))
conn.commit()
cursor.close()
conn.close()
#增删改都要commit

r=cursor.executemany(sql,[(‘‘,‘‘),(‘‘,‘‘),(‘‘,‘‘)])   #提交多个

r是一个返回值,受影响的行数

import pymysql

conn=pymysql.connect(host=localhost,user=root,password=‘‘,database=day61)
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)  #游标,拿数据
sql="select * from app01_userinfo limit 3"
cursor.execute(sql)
‘‘‘
result=cursor.fetchone()
print(result)
result=cursor.fetchone()
print(result)
result=cursor.fetchone()
print(result)
#cursor.scroll(1,mode=‘relative‘)
cursor.scroll(2,mode=‘absolute‘)
result=cursor.fetchone()
print(result)
result=cursor.fetchone()
print(result)
‘‘‘
result=cursor.fetchall()
print(result)
cursor.close()
conn.close()

数据库

标签:填充   import   插入   通过   小数点   自增列   使用   avg   des   

人气教程排行