总览

http://www.cnblogs.com/wangfengming/p/8143554.html数据库的安装(来自老王)

大纲
1.数据库
*    1.创建 
        create database 库名;
    2.使用数据库
        use 库名;
        
    3.查询当前库下所有的表
        show tables;
        show database; -- 显示所有数据库
    *4.删除
        drop database 库名;
2.表操作
    *1.创建
        create table 表名(
         字段1 数据类型  约束条件,
         字段1 数据类型  约束条件,
        )
    
    *2.删除
        drop table t1;
    3.修改表
        
        ALTER TABLE t1  add id int not null PRIMARY key ; -- 添加字段

        ALTER TABLE t1 MODIFY salary double(10,3) not null DEFAULT 10; -- 修改字段类型与约束条件

        ALTER TABLE t1 CHANGE salary sal double(10,3) not null DEFAULT 10; --修改字段名称和类型与约束条件

        ALTER TABLE t1 DROP COLUMN sal; -- 删除指定字段
        
        RENAME table t1 to t5;-- 改变表名称
    4.查看    
        * select * from t1; -- 查询表中数据
        
        desc t1; -- 查看表结构

        show create table t1; -- 显示表的创建信息

    5.复制表
        create table t2 select * from t1; -- 复制表结构和表数据
        * create table t3 LIKE t1; -- 只复制表结构
        
3.数据操作

    1.增
        INSERT into t2(name,age) VALUES('小三',11); -- 指定字段插入

        INSERT into t2 VALUES('',13,2.5); -- 整表字段插入

        INSERT into t2 VALUES('',13,2.5),('',13,2.5),('',13,2.5),('',13,2.5),('',13,2.5);
        --插入多条
        insert into t1 SELECT id,name from t2; -- 复制表数据
    2.删
        delete from t2 where age = 1113;
    3.改
        update t2 set name ='祝小凤' , salary = 100 where age =13;
    4.查
        select * from T1;
    
        1.简单查询
            -- 查询所有
            select * from person; 
            --查询指定字段
            select name,age FROM person;
            -- 别名+字段运算
            select p.name,p.salary,p.salary+p.salary*0.1 as 'sum' from person as p
            -- 去重复查询
            select DISTINCT salary,name from person; 
        
        2.条件查询
            -- 逻辑运算符 < > <= >= != <> =
            -- is null ,is not null
            -- and  OR ()

            SELECT * from person where salary >5000 or ( age <=30 AND NAME ='');
        
        3.区间查询
            SELECT * FROM person where salary >=5000 and salary<=10000;
            -- 推荐使用 :
            --ps:前后包含
            SELECT * FROM person where salary between 5000 and 10000;
        
        4.集合查询 in not in
            
            SELECT * FROM person where age = 20 or age = 23 or age =30 ;

            SELECT * FROM person where age not in(20,23,30);
            
            
        5.模糊查询 like
            SELECT * FROM person where name LIKE '%月'; -- 以什么结尾

            SELECT * FROM person where name LIKE '月%'; -- 以什么开头

            SELECT * FROM person where name LIKE '%月%'; -- 包含


            SELECT * FROM person where name LIKE '_l%'; -- "_"表示占位符
            
        6.排序 
            select * from person ORDER BY salary ASC,age desc;

            -- 强制中文[排序
            select * FROM person ORDER BY CONVERT(name USING GBK) ;
    
        7.聚合函数
            select MAX(salary) from person;
            select MIN(salary) from person;
            select AVG(salary) from person;
            select SUM(salary) from person;
            select COUNT(*) from person;

        8.分组查询   GROUP BY  HAVING
            select count(id),dept_id,avg(salary) from person GROUP BY dept_id HAVING avg(salary) >=5000 ;
             where 与 having区别:
            #执行优先级从高到低:where > group by > having 
            #1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。
            #2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数
        
        9.分页查询 LIMIT
            SELECT * FROM person LIMIT 2,2

        10.正则表达式
            SELECT * FROM person where name REGEXP '^a';
            
            SELECT * FROM person where name REGEXP 'n$';

            SELECT * FROM person where name REGEXP '.a';

            SELECT * FROM person where name REGEXP '[a,e,n]';

            SELECT * FROM person where name REGEXP '[^alex]';

            SELECT * FROM person where name REGEXP 'a|e';

            SELECT * FROM person where name REGEXP '^w.*i$';


        11. SQL 语句关键字的执行顺序
            
            执行顺序: FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY ->limit  
            
            
4.权限    
    create user 'alex'@'127.0.0.1' IDENTIFIED by '123'; -- 创建用户

    grant SELECT,UPDATE,DELETE ON db1.* to 'alex'@'127.0.0.1';

    GRANT all PRIVILEGES ON db1.* to 'alex'@'127.0.0.1'; -- 所有权限

    FLUSH PRIVILEGES; -- 刷新权限        
            
            update mysql.user set password=password('123456') where user='root';
大纲
http://www.cnblogs.com/wangfengming/articles/8268465.html
练习题

 

帮助

For developer information, including the MySQL Reference Manual, visit:

关于开发者信息,包括MySQL参考手册:访问http://dev.mysql.com/

常用指令

 

详细内容

一.数据库常用操作

1.查看数据库(show databases)

 

 

2.创建数据库(CREATE DATABASE 数据库名称;)

 

3.查看创建好的数据库的定义(SHOW CREATE DATABASE 数据库名称;)

 

4.使用数据库(USE)

 

 

5.删除数据库(DROP DATABASE 数据库名称)注意:删除是永久删除

 

 

6.查看默认储存引擎(SHOW ENGINES(用于查看系统默认支持的引擎));

1.innodb引擎

innodb事务型数据库首选引擎,支持事务安全表(acid),支持行锁定外键.mysql5.5.5之后作为默认储存引擎.

特性:

1.

 7.查看库的引擎(SHOW VARIABLES LIKE 库名称;)

 

二.表的基本操作


1.创建数据表(CREAT TABLE 数据表名称(字段名, 数据类型 [列级别约束条件][默认值],);)

注意必须包含下列信息:1.创建表的名称不能使用关键字

                                     2.数据表每一个列(字段)的名称和数据类型,多个列要用逗号隔开.

 1.1使用主键约束

概念:主键又称主码,是表中一列或多列的组合,主键约束(primary key constraint)要求主键列的唯一数据,并且不允许为空.

 

作用:1.结合外键可以加快查询速度,2.主键和记录之间关系如同人和身份证的关系是一一对应的.

1.1.1单子段主键(字段名 数据类型 PRIMARY KEY[默认值])

(1)定义列的同时定义主键

(2)定义完所有列后定义主键

 

 

 1.1.2多字段联合主键(PRIMARY KEY(字段1,字段2,...字段n);)

 假设表中间没有主键id,为了唯一确定一个员工,可以把姓名和部门号联合起来作为主键使用.

 

 

1.1.3使用外键约束

外键用来在两个表数据间建立链接,它可以是一列也可以是多列.一个表可以有一个或多个外键.外键对应的是参照完整性,一个外键可以为空值,若不为空值,则每个外键必须于另一个表主键某个值.

 

主表(父表):主键所在表

从表(子表):外键所在表

CONSTRAONT 外键名 FORENIG KEY 字段名 REFERENCES 主表名 主键列

 

 

 

1.14使用非空约束(字段名 数据类型 NOT NULL;)

字段值不能为空

1.15使用唯一性约束(字段名 数据类型 UNIQUE;)

要求唯一,允许为空,但是只能有一个空值.

1.16使用默认约束(字段名 数据类型 DEFAULT 默认值)

指定记录默认赋值

1.17使用属性值自动增加(字段名 AUTO_INCREMENT;)

注意:1.一个表只能有一个字段使用AUTO_INCREMENT,2.且该字段必须为主键的一部分.3.约束的字段可以是任何数据类型

 

 

 

 

 

 

 

 

 

 

2.查看数据库中的数据表(SHOW TABLES;)

 

3.查看数据表结构(DESCRIBE 数据表名称)

 

   或者用(DESC 数据表名称)

null:为该列是否可以储存的null值

key:表示该列是否已经编制索引

default:表示该列是否有默认值

extra:表示该列附加信息

4.查看表的详细语句结构(SHOW CREATE TABLE 表名称;)

 可以查看创建表的详细信息,和储存引擎和字符编码

 

5.修改数据表名(ALTER TABLE 旧表名 RENAME TO 新表名;)

 

 

6.修改字段的数据类型(ALTER TABLE 表名 MODIFY 字段名 数据类型;)

 

 7.修改字段名(ALTER TABLE 表名称 CHANGE 旧字段名 新字段名 新数据类型;)

 

 

8.添加表的字段(ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件] FIRST|AFTER;)

8.1添加无完整约束性条件字段

 

8.2.添加有完整性约束条件的字段

 

 

8.3在表的指定列后添加一个字段

 

 

 

8.4在表的第一列添加字段

 

 

 

 

9.删除字段(ALTER TABLE 表名 DROP 字段名称;)

 

 10.删除数据表(DROP TABLE 表名称;)

或者 DROP TABLE IF EXISTS 表名称  这会判断表是否存在

 

11.更改表的储存引擎(ALTER TABLE 表名 ENGINE =更改后的储存引擎名;)

 

12.删除表的外键约束(ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;)

 

 

 

三.数据的基本操作


1.为表的所有字段插入数据(INSERT INTO 表名称(列) VALUES(列的数值);)

1.指定所有字段名

2.完全不指定字段名

插入数据前先查看表中的数据(SELECT * FROM 表名称;)

3插入一条记录

4.插入多条记录

records:表名插入的记录条数

duplicates:表名插入时被忽略的记录,原因可能是记录包含了重复的主键值

warnings:表名有问题的数据值,例如发生数据类型转换

 5.将查询结果插入到表中

6.更新数据(UPDATE 字段名 SET name1=value1,name2=value2 WHERE 条件;)

 

7.删除数据(DELETE FROM 表名称 WHERE 条件)

 

 

posted on 2018-04-08 16:14  仓鼠大人爱吃肉  阅读(396)  评论(0编辑  收藏  举报