zoukankan      html  css  js  c++  java
  • mysql 基础语法

    Sql分类:

    1)DDL(数据库定义语言)  例如:create  , drop , alter等  主要操作数据库和表

    2)   DML  (数据库操作语言)  例如:insert, delete, update等  主要操作数据表的数据

    3)   DQL  (数据库查询语言)  例如:select,where等

    4)   DCL  (数据库控制语言)  例如:grant,revoke等

    数据库的操作:

    查询数据的字符集:  show create database 数据库名;

    设置字符集: create database if not exists  数据库名 character set jbk 

    修改字符集:alter database 数据库名 character set utf8

    表的操作:

    show tables 显示所有表

    des 表名 查询表的结构

    表的创建

    show create table 表明  可以查看创建表的详细sql语句

    数据的操作:

    -- 排序
    SELECT * FROM students ORDER BY math DESC; -- 降序
    SELECT * FROM students ORDER BY math ASC;  -- 升序
    SELECT * FROM students ORDER BY math DESC,english ASC;
    
    -- 聚合函数 count max min sum avg   --特点显示只有一条数据
    SELECT COUNT(math) AS '共计人数' FROM students ;  
    SELECT COUNT(IFNULL(math,0)) FROM studnets;  -- count不会统计0 所以解决方式加ifnull();或者换成统计非空的字段
    
    SELECT MAX(math) FROM students
    SELECT MIN(math) FROM students;
    
    SELECT SUM(english) FROM students
    
    SELECT AVG(english) FROM students
    
    
    -- 分组查询  
    -- 一定要注意:分段之后查询的字段要么是“分组的字段" 要么是 ”聚合函数") 不然没有任何的意义!
    SELECT sex,COUNT(sex) FROM students GROUP BY sex
    SELECT sex,AVG(math) FROM students GROUP BY sex
    SELECT sex,AVG(math),COUNT(id) FROM students WHERE math >5 GROUP BY sex
    SELECT sex,AVG(math),COUNT(id) FROM students WHERE math >5 GROUP BY sex HAVING COUNT(id)>1 -- 分组后只刷选人数大于1的分组
    
    
    -- 分页查询
    SELECT * FROM students WHERE NAME LIKE '%h2%' LIMIT 0,3  -- 开始的索引 =(当前页-1)*每页显示的条数
    
    
    -- 去除重复结果集 destingct
    SELECT DISTINCT NAME,address FROM students;
    
    
    -- 计算
    SELECT age,sex,address,math+english FROM students
    SELECT age,sex,address,math+IFNULL(english,0) FROM students
    
    
    -- 条件查询   >, < , = ,!=, <>不等于,&& 并且,and, between...and , or, >=, <=,in()
    -- 特殊 
    SELECT * FROM students WHERE english = NULL -- 是错误的写法 ×
    SELECT * FROM students WHERE english IS NULL;  -- 或者 is not null
     
     -- 模糊查询 like  _代表字符  %代表多个字符
     SELECT * FROM students WHERE NAME LIKE '%h%';
     SELECT * FROM students WHERE age LIKE '_4';
     
     
     
     
     
     -- 约束
     -- primary key  auto_increment
     -- not null
     -- unique  
     -- froeign key 外键约束
    
    -- not null 
     ALTER TABLE students MODIFY NAME VARCHAR(20) NOT NULL;  
     
     -- unique
     ALTER TABLE students MODIFY id VARCHAR(32) UNIQUE;
     
      -- primary key
      -- 删除主键
      ALTER TABLE students DROP PRIMARY KEY   -- 错误的写法 alter table students modify id int
     
     
     
     
     
     
     
     
     
     
     -- 外键约束
     CREATE TABLE xx(
        
        -- 格式 CONSTRAINT 随意取名称 FOREIGN KEY(dep_id) REFERENCES 表名(id)
        CONSTRAINT emp_dept_fk FOREIGN KEY(dep_id) REFERENCES 表名(id)
     );
    -- 删除外键 
    ALTER TABLE students DROP FOREIGN KEY xxxxx;
    -- 添加外键
    ALTER TABLE students ADD FOREIGN KEY (dep_id) REFERENCES 表名(id)  
    
    CREATE TABLE T1(
    
         id INT PRIMARY KEY AUTO_INCREMENT, -- id 为int类型时 才可以使用 auto_increment!
         NAME VARCHAR(32) NOT NULL,
         dept_id INT(32),
         CONSTRAINT t1_fk FOREIGN KEY(dept_id) REFERENCES T2(id)  -- 创建外键一定要注意的是外键的类型与关联字段的类型一定要保持一致!!!
    )
    
    
    -- 级联操作
    CREATE TABLE T1(
    
         id INT PRIMARY KEY AUTO_INCREMENT, -- id 为int类型时 才可以使用 auto_increment!
         NAME VARCHAR(32) NOT NULL,
         dept_id INT(32),
         CONSTRAINT t1_fk FOREIGN KEY(dept_id) REFERENCES T2(id) ON UPDATE CASCADE ON DELETE CASCADE  -- 创建外键一定要注意的是外键的类型与关联字段的类型一定要保持一致!!!
    )
    坚持
  • 相关阅读:
    iOS学习笔记10改用一些更新的API smallelephant_A
    iOS学习笔记2微博cell界面的实现 smallelephant_A
    iOS学习笔记12UISearchBar smallelephant_A
    iOS学习笔记8地图开发 smallelephant_A
    iOS学习笔记5GCD smallelephant_A
    ios学习笔记之1 通讯录应用练习 smallelephant_A
    iOS学习笔记11沙盒 smallelephant_A
    iOS学习笔记13字典数据写入plist smallelephant_A
    iOS学习笔记14sqlite数据库初探 smallelephant_A
    iOS学习笔记7NSURLSession smallelephant_A
  • 原文地址:https://www.cnblogs.com/gaoSJ/p/12881576.html
Copyright © 2011-2022 走看看