zoukankan      html  css  js  c++  java
  • mysql基础知识总结

    一、连接数据库

    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)-------这样设置以后,返回的结果是列表套字典的形式
    
  • 相关阅读:
    转 Xcode调试技巧 EXC_BAD_ACCESS
    qq web协议(转)
    iphone 调试技巧
    转Xcode 调试技巧 XCode调试技巧–设置全局断点快速定位问题代码所在行[zz]
    xcode 允许SVN管理项目文件
    mql4如何自定义画图
    mql相关知识
    iphone 使用委托(delegate)在不同的窗口之间传递数据
    关于同一工单中上万笔序号的一次性生成
    SharpDevelop使用心得
  • 原文地址:https://www.cnblogs.com/luxiaojun/p/5738525.html
Copyright © 2011-2022 走看看