Mysql数据库的相关学习之DDL&DML&DQL&DCL的基本介绍

什么是数据库

数据库的概念:

数据存储的仓库,用于存储和管理数据

常见数据库产品:
  • Oracle:oracle公司 大型的关系型数据库 收费的

  • DB2:IBM公司 大型的关系型数据库 收费的

  • Mysql:mysql公司 中小型关系型数据库 免费的。后来被oracle收购,mysql6之后收费

  • Sql Server:微软公司 中小型关系型数据库 收费的

  • Sqllite:安卓系统内置数据库 微型关系型数据库 免费的

  • NoSql系列数据库:not only sql 非关系型数据库

SQL:结构化查询语言

SQL概念:

通过sql语言可以操作所有的关系型数据库。每种数据库之间会存在差异,称为 “方言”

SQL分类:

  • DDL:对数据库对象的操作 比如建库,建表,删库,删表 对表的字段进行增删改
  • DML:对表中的数据进行增删改
  • DQL:查询表中的数据
  • DCL:权限和安全方面的操作

DDL:

可以操作数据库 和 表;

操作数据库时:

创建数据库:

create database 数据库名称;

删除数据库:

drop database 数据库名称;

修改数据库:

alter database 数据库名称 character set 要修改的字符集名称

查询数据库:

show databases; – 查询所有数据库的名称
show create database 数据库名称; – 查询创建数据库语句

操作数表时:

创建表:

  • 创建表需要知道行列中的数据:

  • int:
    整型 id int,

  • double:
    浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;money double(5,2)

  • char:
    固定长度字符串类型;
    name char(10) “张三”

  • varchar:可变长度字符串类型;
    name varchar(10) “张三”

  • text:字符串类型;存大格式的文本 比如存个小说 一般不用

  • blob:字节类型;存字节类型的数据 比如电影字节 图片字节 但是一般不会把字节数据存到数据库当中

  • date:
    日期类型,格式为:yyyy-MM-dd;

  • time:
    时间类型,格式为:hh:mm:ss

  • datetime:
    *日期时间类型 yyyy-MM-dd hh:mm:ss

  • timestamp:
    时间戳类型 yyyy-MM-dd hh:mm:ss
    如果该类型的字段不给赋值,则默认当前时间

语法:

create table 表名(
列名1 类型1,
列名2 类型2,

列名n 类型n
);
例如:

				create table student(
					sname varchar(20),
					age int,
					gender varchar(6)
				);

删除表:

drop table 表名;

修改表:

alter table 表名 add/modify/change/drop/rename …

1. 修改之添加列:

给stu表添加classname列:
ALTER TABLE stu ADD (classname varchar(100));

2. 修改之修改列类型:

修改stu表的gender列类型为CHAR(2):
ALTER TABLE stu MODIFY gender CHAR(2);

3. 修改之修改列名:

修改stu表的gender列名为sex:
ALTER TABLE stu change gender sex CHAR(2);

4. 修改之删除列:

删除stu表的classname列:
ALTER TABLE stu DROP classname;

5. 修改之修改表名称:

修改stu表名称为student:
ALTER TABLE stu RENAME TO student;

查询表:

show tables; – 查询该数据库下所有表名称
desc 表名; – 查询表结构
注意:操作表之前,应该先选择一个数据库使用:use 数据库名称;

DML:

操作表中的数据;负责对表中的数据进行增,删,改;

增:

语法:

insert into 表名(列名1,列名2,…) values(值1,值2,…);
* 注意:如果表的所有列都添加值,则列名可以省略
例如:

		insert into stu(sname,age) values("lisi",23);
		insert into stu(sname,age,sex) values("zhangsan",23,'1');
		insert into stu values("ww",23,'2');

删:

语法:

delete from 表名 [where 条件];
* truncate table 表名;-- 删除所有记录
* 先删除表,再创建表。
例如:

	delete from stu	where sname = 'lisi'

改:

语法:

update 表名 set 列名1 = 值1 , 列名2 = 值2… [where 条件]

	update stu set sex = "1" where sname = "lisi";

DQL:

对表中的数据进行查询;

语法:

查询表中所有的记录:

select * from student; * 统配所有字段

查询个别字段:

select sid from student;
select sid,sname from student;

条件查询:
  • 条件查询:where 子句
    =、!=、<>(不等于)、<、<=、>、>=;
    BETWEEN…AND; 在什么范围之间
    IN(set);
    IS NULL;为空
    IS NOT NULL 不为空
    AND; 并且
    OR; 或者
    NOT;非

例如:

		雇员表:emp
字段名称	字段类型	说明
empno	int	员工编号
ename	varchar(50)  员工姓名
job	varchar(50)  员工工作
mgr	int	领导编号
hiredate	date	入职日期
sal	decimal(7,2) 月薪
comm	decimal(7,2) 奖金
deptno	int	部分编号

CREATE TABLE emp(
empno INT,
ename VARCHAR(50),
job VARCHAR(50),
mgr INT,
hiredate DATE,
sal DECIMAL(7,2),
comm decimal(7,2),
deptno INT
) ;
INSERT INTO emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp values(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp values(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp values(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp values(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp values(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp values(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp values(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp values(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp values(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp values(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp values(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp values(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp values(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

	//查询工资在 3000----3000之间			
	select * from emp where sal>=2000 and sal<=3000;
	//跟上面一样  between 2000 and 3000;
	select * from emp where sal between 2000 and 3000;

	//查询奖金是 300 500 的

	select * from emp where comm=300 or comm=500;
	//in() 和上面的意思一样
		select * from emp where comm in(300,500);

	//查询奖金不为null的人
	//判断为null 或不为 null 用关键字来判断 
	select * from emp where comm!=null; // 查不出来
	// is null 为空  is not null 不为空
	select * from emp where comm is null;
	select * from emp where comm is not null;
条件查询:like

通配符 % 通配多个任意字符 _ 通配单个任意字符;具体使用规则看例子:

例如:

   				我要查询名字中包含S的员工信息
				select * from emp where ename like '%S%';
				我要查询以S开头的员工
				select * from emp where ename like 'S%';
				我要查询以S结尾的人
				select * from emp where ename like '%S';
				我要查询第二个字符是D的人
				select * from emp where ename like '_D%';
				我要查询名字是五个字符组成的人
				select * from emp where ename like '_____';

字段控制:

修改字段的别名:

AS (可以省略)

  • 给字段起别名:

      			例如:   select sname as 姓名, sage 年龄 from student;
    
  • 给运算字段起别名:

      		 例如: select sname as 姓名, (工资+奖金) as 总收入 from student;
    
  • 给表起别名:给每一张表起一个别名。简化书写

      		例如: select stu.sname, stu.sage from student as stu;
    

你可能感兴趣的:(学习)