Linux 开源数据库Mysql-4-SQL结构化查询语言

本文详细介绍了Linux开源数据库MySQL的基础操作,包括DDL(定义库、表、索引等)、DML(插入、删除、更新数据)、DQL(查询语句)和DCL(控制用户权限)。通过实例演示创建表、添加字段、查询数据及表约束,适合初学者快速上手。
摘要由CSDN通过智能技术生成

Linux 开源数据库Mysql-4
SQL结构化查询语言

DDL语句数据库定义语言:数据库、表、视图、索引、存储过程,例如CREATE、DROP、ALTER
DML语句数据库操纵语言:插入数据INSERT、删除数据DELETE、更新数据UPDATE
DQL语句数据库查询语句:查询数据SELECT
DCL语句数据库控制语句语言:例如控制用户得访问权限GRANT、REVOKE

表:数据库存储数据得基本单位,表由若干个字列组成
,主要用来存储数据记录
字段:字段名。字段类型(长度),字段约束组成(可选)
类型:字符。数字,日期
约束:不能为空,自动增长

DDL
定义库:
创建数据库:CREATE DATABASE 数据库名;
例如:CERATE DATABASE discuz;
查看所有数据库:show databases ;
选择/进入数据库: use discuz
select database();
删除数据库:drop discuz ;

系统中得位置
/var/lib/mysql
数据类型
数值类型:整数型int
浮点数类型float 小数
字符串类型
CHAR系列 CHAR VARCHAR
TEXT系列 TINYTEXT TEXT MEDIUMTEXT LONGTEXT
BLOB 系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB
BINARY系列 BINARY VARBINARY
枚举类型: ENUM
集合类型: SET
时间和日期类型:DATE TIME DATETIME TIMESTAMP YEAR

例1:
创建表 表名t1 (列名id,类型int)
mysql> create table t1(id int);
查看表结构
desc t1;
查询表
show tables;
插入数据:
inster into t1 vlaues (1);
删除表
drop table t1;

向表中插入内容
语法:
inster into 表明(字段1,字段2) values(字段值列表);

例:
表school.student2
字段名 数据类型
编号 id int
姓名 name varchar(50)
出生年份 born_year year
生日 birthday date
上课时间 class_time time
注册时间 reg_time datetime

创建表

create table student2(id int,name varchar(50),born_year year,birthday date,class_time time,reg_time datetime );

插入数据

insert into student2 values(2,'jack',1982,19821120,123000,20140415162545);

表完整性约束
作用:用于保证数据的完整性和一致性

约束条件								说明
PRIMARY KEY (PK)		    标识该字段为该表的主键,可以唯一的标识记录,不可以为空  UNIQUE + NOT NULL
FOREIGN KEY (FK)		    标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联
NOT NULL					标识该字段不能为空
UNIQUE KEY  (UK)		    标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
AUTO_INCREMENT			    标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT					    为该字段设置默认值
UNSIGNED               		无符号,正数
ZEROFILL            		 使用0填充,例如0000001

说明:

  1. 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值
  2. 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值
    sex enum(‘male’,‘female’) not null default ‘male’
    age int unsigned NOT NULL default 20 必须为正值(无符号) 不允许为空 默认是20
  3. 是否是key
    主键 primary key
    外键 forengn key
    索引 (index,unique…)

修改表ALTER TABLE
语法:

  1. 修改表名
    ALTER TABLE 表名
    RENAME 新表名;

  2. 增加字段
    ALTER TABLE 表名
    ADD 字段名 数据类型 [完整性约束条件…],
    ADD 字段名 数据类型 [完整性约束条件…];
    ALTER TABLE 表名
    ADD 字段名 数据类型 [完整性约束条件…] FIRST;
    ALTER TABLE 表名
    ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

  3. 删除字段
    ALTER TABLE 表名
    DROP 字段名;

  4. 修改字段
    ALTER TABLE 表名
    MODIFY 字段名 数据类型 [完整性约束条件…];
    ALTER TABLE 表名
    CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
    ALTER TABLE 表名
    CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

MySQL单表查询 SELECT
例子
表company.employee5

雇员编号	id				   	 	int				
雇员姓名	name			    	varchar(30)
雇员性别	sex				    	enum
雇用时期	hire_date				date
职位		post					varchar(50)
职位描述	job_description			varchar(100)
薪水		salary					double(15,2)
办公室	office				    int
部门编号	dep_id					int

创建表
在这里插入图片描述插入数据

在这里插入图片描述
简单查询
查询全部数据

SELECT * FROM employee5;

在这里插入图片描述
查询名字、薪水、部门

SELECT name, salary, dep_id FROM employee5;

在这里插入图片描述

通过四则运算查询

查询每个人得年薪

SELECT name, salary, salary*14 FROM employee5;

在这里插入图片描述

定义显示格式
CONCAT() 函数用于连接字符串

SELECT CONCAT(name, ' annual salary: ', salary*14)  AS Annual_salary FROM employee5;

在这里插入图片描述

单条件查询

查询职位是HR得人

SELECT name,post  FROM employee5 WHERE post='hr';

多条件查询 AND
查询职位是HR得且薪水大于600得

SELECT name,salary FROM employee5 WHERE post='hr' AND salary>600;

关键字BETWEEN AND
查询薪水在5000到15000之间得人

SELECT name,salary FROM employee5 WHERE salary BETWEEN 5000 AND 15000;

不在5000至15000得人

SELECT name,salary FROM employee5 WHERE salary NOT BETWEEN 5000 AND 15000;

关键字IS NULL
查询职位描述是空得人

SELECT name,job_description FROM employee5 WHERE job_description IS NULL;

查询职位描述不是空得人

SELECT name,job_description FROM employee5 WHERE job_description IS NOT NULL;

关键字IN集合查询
查询薪水等于4000或5000或6000或9000得人

SELECT name, salary FROM employee5 WHERE salary=4000 OR salary=5000 OR salary=6000 OR salary=9000 ;

查询薪水等于4000或5000或6000或9000得人

SELECT name, salary FROM employee5 WHERE salary IN (4000,5000,6000,9000) ;

查询薪水不等于4000或5000或6000或9000得人

SELECT name, salary FROM employee5 WHERE salary not IN (4000,5000,6000,9000) ;

关键字LIKE模糊查询

通配符’%’
查询名字以al开头得人

SELECT * FROM employee5 WHERE name LIKE 'al%';

查询排序
按单列排序

按照薪水排列

SELECT * FROM employee5 ORDER BY salary;

按照薪水正序排列

SELECT name, salary FROM employee5 ORDER BY salary ASC;

按照薪水倒叙排列

SELECT name, salary FROM employee5 ORDER BY salary DESC;

按多列排序
先按入职时间,再按薪水排序

SELECT * FROM employee5 ORDER BY hire_date DESC, salary DESC;

使用集合函数查询
统计所有

SELECT COUNT(*) FROM employee5;

统计所有部门为101得

SELECT COUNT(*) FROM employee5 WHERE dep_id=101;

薪水最多得

SELECT MAX(salary) FROM employee5;

薪水最少得

SELECT MIN(salary) FROM employee5;

所有人薪水得平均数

SELECT AVG(salary) FROM employee5;

所有人薪水得和

SELECT SUM(salary) FROM employee5;

101部门人得薪水得和

SELECT SUM(salary) FROM employee5 WHERE dep_id=101;

分组查询
GROUP BY和GROUP_CONCAT()函数一起使用
按照部门代码进行分组

SELECT dep_id,GROUP_CONCAT(name) FROM employee5 GROUP BY dep_id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值