MySQL

1、sql语句规范

sql是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。

在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持sql。

<1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;

<2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。

<3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。

SELECT * FROM tb_table
            WHERE NAME="YUAN";

<4> 注释:单行注释:--

               多行注释:/*......*/

<5>sql语句可以折行操作

2、数据类型

2.1 数值类型

2.2 无符号类型

=========有符号和无符号tinyint==========
#tinyint默认为有符号
MariaDB [db1]> create table t1(x tinyint); #默认为有符号,即数字前有正负号
MariaDB [db1]> desc t1;
MariaDB [db1]> insert into t1 values
    -> (-129),
    -> (-128),
    -> (127),
    -> (128);
MariaDB [db1]> select * from t1;
+------+
| x    |
+------+
| -128 | #-129存成了-128
| -128 | #有符号,最小值为-128
|  127 | #有符号,最大值127
|  127 | #128存成了127
+------+



#设置无符号tinyint
MariaDB [db1]> create table t2(x tinyint unsigned);
MariaDB [db1]> insert into t2 values
    -> (-1),
    -> (0),
    -> (255),
    -> (256);
MariaDB [db1]> select * from t2;
+------+
| x    |
+------+
|    0 | -1存成了0
|    0 | #无符号,最小值为0
|  255 | #无符号,最大值为255
|  255 | #256存成了255
+------+

3、数据库操作

 

1.创建数据库(在磁盘上创建一个对应的文件夹)
    create database [if not exists] db_name [character set xxx] 
    
2.查看数据库
    show databases;查看所有数据库
    show create database db_name; 查看数据库的创建方式

3.修改数据库
    alter database db_name [character set xxx] 

4.删除数据库
    drop database [if exists] db_name;
    
5.使用数据库
    切换数据库 use db_name; -- 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
    查看当前使用的数据库 select database();

  

4、数据表操作

 4.1 创建表

-- 语法
CREATE TABLE tab_name(
            field1 type[完整性约束条件],
            field2 type,
            ...
            fieldn type
        )[character set xxx];  

示例:

 CREATE TABLE employee(
            id int primary key auto_increment ,
            name varchar(20),
            gender bit default 1,
            birthday date,
            department varchar(20),
            salary double(8,2) unsigned,
            resume text
          );

4.2 查看表信息  

desc tab_name              查看表结构
show columns from tab_name      查看表结构
show tables             查看当前数据库中的所有的表
show create table tab_name      查看当前数据库表建表语句 

4.3 修改表结构

(1)增加列(字段)
      alter table tab_name add [column] 列名 类型[完整性约束条件][first|after 字段名];
      
      #添加多个字段
      alter table users2 
            add addr varchar(20),
            add age  int first,
            add birth varchar(20) after name;

(2)修改一列类型
      alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名];
(3)修改列名
      alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件][first|after 字段名];
4)删除一列
      alter table tab_name drop [column] 列名;
(5)修改表名
      rename table 表名 to 新表名;

(6)修该表所用的字符集    
      alter table student character set utf8;

4.4 删除表  

drop table tab_name;  

5、表记录操作

 5.1 增加表记录

<1>插入一条记录:

  insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......);
    

<2>插入多条记录:
  insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......),
                                        (value1,value2,.......), 
                             ...                               ;

<3>set插入:
  insert [into] tab_name set 字段名=值  

示例:

INSERT employee (name,gender,birthday,salary,department) VALUES
                      ("alex",1,"1985-12-12",8000,"保洁部"),
                      ("egon",1,"1987-08-08",5000,"保安部"),
                      ("yuan",1,"1990-06-06",20000,"教学部");


INSERT employee VALUES (8,"女神",0,"1992-02-12","教学部",7000,"");

INSERT employee SET name="wusir",birthday="1990-11-11";

5.2 修改表记录

update tab_name set field1=value1,field2=value2,......[where 语句]  

示例:

update employee_new set birthday="1989-10-24" WHERE id=1;

--- 将yuan的薪水在原有基础上增加1000元。
update employee_new set salary=salary+4000 where name='yuan';

5.3 删除表记录

方式1:
delete from tab_name [where ....]

方式2:
truncate table emp_new;

            /*    
            如果不跟where语句则删除整张表中的数据
            delete只能用来删除一行记录
            delete语句只能删除表中的内容,不能删除表本身,想要删除表,用drop
            TRUNCATE TABLE也可以删除表中的所有数据,词语句首先摧毁表,再新建表。此种方式删除的数据不能在
            事务中恢复。
            */  

示例:

删除表中名称为’alex’的记录。
   delete from employee_new where name='alex';
删除表中所有记录。
   delete from employee_new;

注意auto_increment没有被重置:alter table employee auto_increment=1;

6、查询表记录

 

select  * from tab_name   : 显示所有的记录的所有字段信息



select [distinct] filed,filed2,.....   from tab_name
                             
							   where 子句
							   group by 分组     key  :  分组条件
							   having 子句  : 过滤
							   order by
							   limit


查询 每一个省份的平均工资
     select city,avg(salary) from emp group by city;

查询 平均工资大于8000的省份的名称

     select city,avg(salary) from emp group by city having avg(salary) > 8000

 

7、多表查询

 

内连接查询:

select * from emp inner join dep on emp.dep_id=dep.id;


左外连接查询:

select * from emp left join dep on emp.dep_id=dep.id;

  

8、完整约束

 

主键约束: 

       primary key    :  非空(not null )且 唯一 (unique)  


外键约束(关联字段):

  

posted @ 2017-09-15 09:39  junxun  阅读(155)  评论(0编辑  收藏  举报