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

     

  • 相关阅读:
    poj 2485 Highways 最小生成树
    hdu 3415 Max Sum of MaxKsubsequence
    poj 3026 Borg Maze
    poj 2823 Sliding Window 单调队列
    poj 1258 AgriNet
    hdu 1045 Fire Net (二分图匹配)
    poj 1789 Truck History MST(最小生成树)
    fafu 1181 割点
    减肥瘦身健康秘方
    人生的问题
  • 原文地址:https://www.cnblogs.com/cangshuchirou/p/8710319.html
Copyright © 2011-2022 走看看