mysql学习(一)

(1)语句规范:关键字与函数名称全部大写(小写通过但不推荐);数据库名称、表名称、字段名称小写;sql语句必须以分号结束;

SELECT VERSION():查看版本; SELECT NOW():查看当前时间; SELECT USER():查看当前用户;

(2)基本知识:mysql默认端口号:3306;超级用户:root;SET NAMES gbk;

(3)数据类型之整形:TINYINT(1字节) UNSIGNED(无符号,大于0),SMALLINT(2字节),MEDIUMINT(3字节),INT(4字节),BIGINT(8字节);

  浮点型:FLOAT[(M,D)]M表示数字总位数,D是小数点后面的位数;DOUBLE[(M,D)];DOUBLE类型表示的范围大得多;

  时间类型:YEAR(1字节),TIME(3字节),DATE(3字节,只有年月日),DATETIME(8字节,有年月日时分秒),TIMESTAMP(4字节,时间戳);

  浮点类型:CHAR(M):(M个字节,M<=255,定长,不够在后面补空格);   VARCHAR(M):(变长,L+1个字节,L<=M,M<=65535),

    ENUM(‘value1’,‘value2’):选择一个;SET(‘value1’,‘value2’):进行排列组合;

(4)SELECT DATABASE();查看当前使用的数据库;

(5)SHOW TABLES[FROM database_name]:查看当前数据库的表,SHOW COLUMNS FROM tb_name(查看表结构)或 DESCRIBE tb_name;(这两种方法都不显示行,想看行需要用SELECT)

(6)插入记录:INSERT [INTO] ta_name [(col_name)] VALUES (val,)

(7)AUTO_INCREMENT   默认初始值为1,每次加一,(插入错误也会加1)必须与主键一起使用;  UNIQUE KEY 唯一约束,可为空值,一个表可存在多个唯一约束;

(8)默认值:当插入记录时,如果没有明确为字段赋值,则自动赋予默认值;

(9)5种约束:非空约束,主键约束,唯一约束,默认约束,外键约束;

(10)外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同,而字符的长度可以不同;外键列和参照列必须创建索引,如果外键列不存在索引,mysql将自动创建索引(引擎必须为InnoDB)(外键列和参照列列名不一样);

(11)外键约束的参照操作:(ON DELETE 或UPDATE)CASCADE:父表删除或更新时自动删除或更新子表中匹配的行;

              父表删除或更新行时设置子表中的外键行为NULL(字表列没有指定NOT NULL),

              NO ACTION 或 RESTRICT : 拒绝对父表的删除或更新操作;

(12)表级约束(多个数据列)只能在列定义后声明,列级约束无限制;

(13)添加单列:ALTER TABLE tb_name ADD col_name col_definition [FIRST | AFTER col_name](用逗号分开可同时删除多列或同时删除创建);

(14)添加主键约束(外键和唯一):ALTER TABLE tb_name ADD [CONSTRAINT [name]] PRIMARY KEY [index_type] (col_name1);

      添加/删除默认约束:ALTER TABLE tb_name ALTER [COLUMN] col_name {SET DEFAULT num | DROP DEFAULT};

(15)删除主键约束:ALTER TABLE tb_name DROP PRIMARY KEY;

    删除唯一和外键约束:ALTER TABLE tb_name DROP FOREIGN KEY key_name(通过 SHOW INDEXES FROM table_name找到约束的名字);

(16)修改列定义:ALTER TABLE tb_name  MODIFY col_name      column_definition [FIRST | AFTER col_name];

    修改列名称与列定义:ALTER TABLE tb_name CHANGE old_col_name new_col_name column_definition [FIRST | AFTER col_name];

    数据表更名:ALTER TABLE tb_name RENAME new_tb_name;

(16)插入记录: INSERT tb_name [(col_name,.....)] {VALUES | VALUE} ({expr(表达式) | DEFAULT,.....}),(.........)

          INSERT tb_name SET col_name=({expr(表达式) | DEFAULT,.....}),

(17)更新记录:  UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name =({expr(表达式) | DEFAULT,.....}) [col_name2......] [WHERE                                                                         where_contion]

    删除记录:DELETE FROM tb_name [WHERE  where_contion];

    查询的结果分组:[GROUP BY {col_name | position} [ASC | DESC],....]  分组条件:[HAVING where_condition];

       对查询结果进行排序:[ORDER BY {col_name | expr | position} [ASC | DESC] , ..............]

        限制查询结果返回的数量:[LIMIT [offest(开始的位置,0开头),] row_count(数量)] 

(18)子查询(查询嵌套):返回结果很多,可以用 operand ANY(subquery)  operand SOME(subquery)   operand ALL(subquery) ,还可以用  IN | NOT IN,

      如果子查询返回任何行,EXISTS将返回TRUE , 否则为FALSE;

(19)选择插入:INSERT tb_name [(col_name , )]  SELECT........

    多表参照更新:UPDATE tb_references SET col_name = {expr1 | DEFAULT} [.........] [WHERE where_condition];

(20)字符函数:CONCAT():字符连接 CONCAT_WS():使用指定的分隔符进行字符连接;FORMAT(数字,保留小数点位数)(四舍五入);

    LOWER():转小写;UPPER():转大写;LEFT(char(等于字符串),int):取左边;RIGHT():取右边;

    LENGTH():字符串长度;LTRIM():去掉前导空格;RTRIM():去掉后导空格;TRIM():去掉前后导空格;

    TRIM(LEADING '?' FROM '??KK?K??'):去掉前导字符;TRIM(TRAILNG '?' FROM '??KK?K??'):去掉后导字符;

    TRIM(BOTH '?' FROM '??KK?K??'):去掉前导和后导字符;REPLACE(varchar(要进行换操作的字符串),char(被换的),char(换后的));

    SUBSTRING(varchar,index(从一开始)(可以有负值),num(要截取的长度)(不写为到末尾));

    LIKE '%(一个任意字符)%%' ESCAPE '前面的任意字符':将第二个字符转义;   %:任意长度字符; _ : 任意一个字符;

(21)数值运算符与函数:CEIL():向上取整;FLOOR():向下取整;ROUND():四舍五入;

          DIV:正数除法;MOD:取余(可对小数进行);POWER():幂运算   TRUNCATE(int,length):截取(参数可为负)

(22)日期时间函数:NOW()当前日期和时间;CURDATE():当前日期;CURTIME()当前时间;

(23)聚合函数(只有一个返回值):AVG(),SUM();

(24)乱码时:改变编码方式:SET NAMES GBK;

(25)用户自定义函数:user-defined function, UDF 是一种对Mysql扩展的途径,其用法与内置函数相同,

      结构:CREATE FUNCTION  function_name RETURNS {返回类型} 函数体(有 return 语句);函数体如果为复合结构则使用begin .. end 语句;

(26)DILIMITER char;  将以;为结尾改成以char结尾;

 (27)mysql不支持全外查询,可以通过union左右查询的结果获得全外查询的结果,union all不查重。

 

  

posted @ 2016-10-20 21:52  曹某某的博客  阅读(95)  评论(0)    收藏  举报