zoukankan      html  css  js  c++  java
  • 数据库(所有人都坐下!这是基本操作!)

    总览

    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 条件)

     

  • 相关阅读:
    @codeforces
    @atcoder
    @loj
    @atcoder
    @atcoder
    @loj
    @atcoder
    @atcoder
    @atcoder
    @uoj
  • 原文地址:https://www.cnblogs.com/cangshuchirou/p/8710319.html
Copyright © 2011-2022 走看看