讲完Java基础后,后台老师就直接开奔数据库,花了两天的时间滔滔不绝的带过MySQL数据库基础,鄙人也按照惯例写一下小小的笔记来巩固加深一下自己的印象。
不知不觉已经热爱上写博客文章了,对于现在的自己相对于从前来说也是一种突破吧,废话不多说了,开工。
需要注意的是:
用途:DML用于查询于修改数据记录,包括如下SQL语句:
用途:DDL用于定义数据库的结构,比如创建、修改或删除 数据库对象,包括如下SQL语句:
用途:DCL用来控制数据库的访问,包括如下SQL语句:
基本语句
CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>]
[[DEFAULT] COLLATE <校对规则名>];
也可以直接简便的创建数据库:
CREATE DATABASE [IF NOT EXISTS] <数据库名>
OK 完成。
但是需要注意的是:
语句:
CREATE TABLE table_name
(
field1 datatype DEFAULT NULL,
field2 datatype COMMENT NULL,
field3 datatype,
)
那么各参数意思分别表示啥意思?之间又有啥关系呢?
character set 代表字符集
collate 代表校对规则
field:指定列名。 datatype:指定列类型。
注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型,实现添加自增长语句,主键字段后加auto increment(只适用MySQL)。
例如user对象
id int
name string
password string
birthday date
先上一张图:
char 和varchar类型;说明:用来保存mysql中较短的字符串。
紧接着是timestamp 和datatime类型;说明:用来保存日期类型。
show variables like 'time_zone'
set time_zone='+9:00'
使用ALTER TABLE 语句追加、修改、或者删除列的语法。
添加语句:
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);
修改表语句:
ALTER TABLE table
MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);
删除表的语句:
ALTER TABLE table
DROP column;
alter table student character set utf8;
插入数据
比如说:
INSERT INTO
departments(department_id, department_name,
manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);
1 row created.
INSERT INTO
employees(employee_id,last_name,email,hire_date,job_id) VALUES
(300,’Tom’,’tom@126.com’,to_date
(‘2012-3- 21’,’yyyy-mm-dd’),’SA_RAP’);
1 row created.
UPDATE 语句语法
比如说:
更新数据
UPDATE employees
SET department_id = 70
WHERE employee_id = 113;
UPDATE employees
SET department_id = 110;
然后新建查询-输入
update user
set salary ='5000';
那么所有salary列的数据全部变成了5000
DELETE语句
使用DELETE 语句从表中删除数据。
删除数据:举个栗子。
DELETE FROM departments
WHERE department_name = 'Finance';
DELETE FROM copy_emp;
选择全部列
select * from departments;
选择特定的列
select department_id,location_id from departments;
注意:
概述:
BETWEEN用法:
SELECT last_name, salary FROM employees
WHERE salary BETWEEN 2500 AND 3500;
标识查询 员工表-数据为薪资在2500到3500之间的员工姓名。
IN 用法:使用 IN运算显示列表中的值。
SELECT employee_id, last_name,
salary, manager_id FROM employees
WHERE manager_id IN (100, 101, 201);
标识查询 id 为100,101,201 的员工id。
LIKE 查询约束
使用LIKE运算选择类似的值。
使用ORDER BY 子句排序。
----ASC(ascend):升序。
----DESC(descend):降序。
ORDER BY 子句在SELECT语句的 结尾。
组函数类型
可以对数据型数据使用AVG和SUM函数。
SELECT AVG(salary), MAX(salary),
MIN(salary), SUM(salary)
FROM employees
WHERE job_id LIKE '%REP%';
可以对数据型数据使用MIN和MAX函数。
SELECT MIN(hire_date),MAX(hire_date)
FROM employee;
例如:
Select upper/lower(列名) from tablename
[WHERE where_definition]
这些函数老师演示过各种例子,比如说拿其中的数学和字符串来说:
--CHARSET返回字串字符集
select CHARSET('xywang');
输出结果utf-8。
--CONCAT拼接字符串
select CONCAT('%','xwyang','%')
输出结果:%xwyang%。
--mysql的下标从1,没有找到返回0,返回substring在string中出现的位置
select INSTR('123456789','23')
select INSTR('23','12345678')
输出结果:2 0
--转换成大写
select UCASE('Apppp');
select UPPER('Apppp');
--转换成小写
select LOWER('AAAAp');
--左边起取length个字符
SELECT LEFT('12345678',4);
--uft8一个汉字3位
--Gbk 一个汉字两位
--LENGTH 返回占的位数
SELECT LENGTH('aaaa张');
6.5.1 Mysql连接
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;
6.5.2.区分重复的列名
6.5.3表的别名
比如说:
SELECT bt.id,NAME,boyname FROM beauty bt,boys b;
WHERE bt.`boyfriend_id`=b.id ;
这里的查询bt 就是一个表的别名,查询bt.id 和名字, 从bt 和 b 表中, where条件加主外键连接, id。
使用ON 子句创建连接
约束
NOT NULL约束
UNIQUE约束
示例代码:
CREATE TABLE USER( id INT NOT NULL, NAME VARCHAR(25),
PASSWORD VARCHAR(16),
#使用表级约束语法
CONSTRAINT uk_name_pwd UNIQUE(NAME,PASSWORD)
);
ALTER TABLE USER
ADD UNIQUE(NAME,PASSWORD);
ALTER TABLE USER
ADD CONSTRAINT uk_name_pwd UNIQUE(NAME,PASSWORD);
ALTER TABLE USER
MODIFY NAME VARCHAR(20) UNIQUE;
ALTER TABLE USER
DROP INDEX uk_name_pwd;
示例代码:
CREATE TABLE emp4(
id INT AUTO_INCREMENT
PRIMARY KEY, NAME VARCHAR(20)
);
这是列级模式。↑
CREATE TABLE emp5(
id INT NOT NULL AUTO_INCREMENT,
NAME VARCHAR(20),
pwd VARCHAR(15),
CONSTRAINT emp5_id_pk PRIMARY KEY(id)
);
这是表级模式。↑
示例代码:
CREATE TABLE temp(
id INT AUTO_INCREMENT,
NAME VARCHAR(20),
age INT CHECK(age > 20), PRIMARY KEY(id)
);
示例代码:
CREATE TRIGGER 触发器名称 BEFORE/AFTER INSERT/UPDATE ON 表名
FOR EACH ROW
BEGIN
DECLARE msg varchar(100);
IF NEW.列名 (过滤条件 )
THEN
SET msg = CONCAT(‘您输入的:’,NEW.列名,' 为无效的。');
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg;
END IF;
END;
以上就是今天MySQL复习,老师要讲的内容,简单的整理了一下。
本文仅仅简单介绍了MySQL的基础知识,对于专业以及深处的知识并未涉及到,而这些基础知识确实可以为之后的实战打下基础,提供了大量能使我们快速便捷地处理数据的函数和方法。好了,打字不容易,如果本文对你有帮助的话别忘了一键三连噢,我是海海不掉头发。
要成功不需要什么特别的才能,只要把你能做的小事做得好就行了。——维龙