zoukankan      html  css  js  c++  java
  • 数据库操作 (4-3)

    1.数据库
    * 1.创建
    create database 库名;
    2.使用数据库
    use 库名;

    3.查询当前库下所有的表
    show tables;
    show database; -- 显示所有数据库
    *4.删除
    drop database 库名;
    2.表操作
    *1.创建
    create table 表名( 自增字段 数据类型 auto_increment
    字段1 数据类型 约束条件,
    字段1 数据类型 约束条件,
    primary key(自增字段)
    )engine=innodb Auto_increment=13 default charset=utf8;
    注意:ENGINE=InnoDB使用innodb引擎
    DEFAULT CHARSET=utf8 数据库默认编码为utf-8
    AUTO_INCREMENT=1 自增键的起始序号为1

    注意 : auto_increment(自增字段,必须和null搭配使用,如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,
    MySQL将自动生成下一个序列编号。编号从1开始,并1为基数递增。当插入记录时,
    没有为AUTO_INCREMENT明确指定值,则等同插入NULL值。)

    *2.删除
    drop table t1;
    3.修改表

    ALTER TABLE t1 add 字段名 int not null PRIMARY key ; -- 添加字段

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

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

    ALTER TABLE t1 DROP COLUMN 字段名; -- 删除指定字段

    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 字段名 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 (as,将字段名,重新命名一个名称)
    -- 去重复查询
    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; (ASC按正序排:从小到大。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';

  • 相关阅读:
    Linux内核(5)
    Linux内核(4)
    Linux内核(3)
    Linux内核(2)
    Linux内核(1)
    Linux时间子系统(十七) ARM generic timer驱动代码分析
    Linux时间子系统(十六) clockevent
    Linux时间子系统(十五) clocksource
    Linux时间子系统(十四) tick broadcast framework
    Linux时间子系统(十三) Tick Device layer综述
  • 原文地址:https://www.cnblogs.com/yimiflh/p/8710199.html
Copyright © 2011-2022 走看看