您的位置:首页 > 数据库 > MySQL

mysql基础知识总结

2016-08-04 21:45 501 查看
一、连接数据库

mysql -u root -p  默认连接到本地的数据库
mysql -h 192.168.12.12 -u root -p  连接远程的的数据库


二、基本命令

1、show databases;---------------------------显示数据库中的库
2、create database 数据库名-------------------创建一个数据库
3、use 表名称;-------------------------------使用表
4、show tables;------------------------------显示当前数据库中所有的表
5、creat table 表名(-------------------------创建表
列名 数据类型  是否为空  默认值 自增列 设置主键
列名 数据类型  是否为空  设置主键
)
6、drop table 表名-----------------------------删除表
7、delete from 表名----------------------------清空表
truncate table 表名
8、修改表的操作:
alter table 表名 add 列名 属性------------------添加列
alter table 表名 drop 列名 属性------------------删除列
alter table 表名 change 旧列名   新列名   类型---修改列
alter table 表名 add primary key(列名)
alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
alter table 表名 drop foreign key---------------删除外键


自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
注意:1、对于自增列,必须是索引(含主键)
 2、对于自增可以设置步长和起始值

自增列的俩种写法 :1、在创建的列后面直接加 primary key 2、写完列后在最后加primary key (列名,列名)

主键:一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
外键:一个特殊的索引,只能是指定内容

constraint fk_cc foreign key (color_id) references color(nid


三、基本数据类型

数据类型:
整数:tinyint  ----0-255
:int(m)----m表示显示的位数
:bigint ------大整数
小数:decimal(m,d)-----精确的小数,其中m=<65,n=<30,m表示数字总长度,n表示小数后的几位
:flout(m,n)-------单精度浮点数,数字越大越不准确
:double(m,n)------双精度浮点数,数字越大越不准确
字符串:char(m)----------定长字符串,m表示字符串的总长度----------查询速度快
:varchar(m)-------变长字符串,m表示字符串的总长度
:text(m)----------保存变长的大字符串
:enum(1,2,3)----枚举,表示自能从里面获取
:set--------------集合
时间:data----------2016-8-2016-8-2
:time----------21:48
:datatime-------2016-8-2 21:49:33


四、表内容的操作

1、增
insert into 表名(字段1,字段2....) values(值1,值2.....),(值1,值2....)
2、删
delete  from 表名 where 条件
3、改
updata 表名 set 字段 = 值   条件
4、查
条件:
select * form 表名 条件
select * from 表名 where nid > 1 and name != 'alex';
select * from 表名 where nid between 5 and 12;----------------查nid为5-12之间的值
select * from 表名 where nid not in (select nid from 表名)
select * from 表名 where nid in(1,2,3,4)
通配符:
select * from 表名 where name like 'ale%'----------------------以ale开头的所有字符串 %表示多个字符
select * from 表名 where name like 'ale_'----------------------以ale开头的所有字符串 %表示单个字符
限制:
select * from 表名 limit 5;------------------------------------找前5行数据
select * from 表名 limit 1,2;----------------------------------找从第1行开始以后的2行数据
select * from 表名 limit 2 offset 1;----------------------------------找从第1行开始以后的2行数据
排序:
select *  from 表名 order by 字段1,字段2;------先按字段1排序,字段1相同的值再按字段2进行排序
这里的后面也可以规定asc(从小到大)和desc(从大到小)进行排序
分组:
select 字段1 from 表名 group by 字段1------------以字段1中的数据进行分组,显示字段1中的种类
select count(字段1) from 表名 group by 字段1------以字段1进行分组,并显示分组后字段1中数据种类的个数
select 字段1 from 表名 group by 字段2--------以字段2进行分组的时候,查询的是字段1中的数据,默认是把字段中小的值取出来
select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
select count(字段1),sum(字段1),max(字段1),min(字段1),avg(字段1) from 表名  grop by 字段2
select count(字段1),sum(字段1),max(字段1),min(字段1),avg(字段1) from 表名  grop by 字段2 having  max(字段1)>1;
|
|
----------->如果想用聚合条件作为条件的话,必须使用having


五、pymysql操作数据库

创建连接
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')

创建游标
cursor = conn.cursor()

执行SQL,并返回收影响行数
effect_row = cursor.execute("update hosts set host = '1.1.1.2'")

执行SQL,并返回受影响行数
effect_row = cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,))

执行SQL,并返回受影响行数-----------插入多行数据executemany("sql语句",[(),().....])
effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])

提交,不然无法保存新建或者修改的数据
conn.commit()-----------------查询的时候不用

new_id = cursor.lastrowid-----------获取自增id ,默认获取最后一行的

关闭游标
cursor.close()

# 关闭连接
conn.close()


cursor.execute("select * from hosts")
cursor.fetchall()	--------以元祖套元祖的方式获取得到的所有数据
cursor.fetchone() ----------获取一行数据,后面再有的话,则获取下一行数据
cursor.fetchmany(m) ----------获取前几行数据

cursor.scroll(1,mode='relative')  相对当前位置向下移动一个位置
cursor.scroll(1,mode='absolute')  移动到1的位置

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)-------这样设置以后,返回的结果是列表套字典的形式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: