MySQL

Mysql

是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。它是一款免费开源、小型、关系型数据库管理系统。


为什么要用MySQL数据库?

MySQL是目前最受欢迎开源的SQL数据库管理系统,与其他的大型数据库Oracle、DB2、SQL Server等相比,MySQL虽然有它的不足之处,对于个人或中小型企业来说,MySQL的功能已经够用了,在性能与标准的取舍上,一直坚持性能优先的原则,成为了互联网行业非常流行的数据库软件之一。 MySQL又是开源软件,因此没有必要花大精力和大价钱去使用大型付费数据库管理系统了。
1.MySQL是开放源代码的数据库
2.MySQL的跨平台性
3.价格优势,MySQL的社区版本都是免费的,即使需要付费的附加功能价格也比其它数据库便宜。

登录流程

    mysql -u root -p passwd:

use databases;( 使用数据库)
help
show databases;( 显示所有的数据库)
show tables;(  显示表)
1064 错误代码,语法错误
1045 登录错误 1007 创建同名的数据库时报错 1008 数据库不存在,删除数据库失败
show grants;(  显示用户可以对服务器有哪些权限)
show stataus;( 用于显示广泛的服务器状态信息)


库:保存有组织的数据的容器
表:某种特定类型数据的结构化清单,包含数据库中所存数据的数据库对象,有行和列组成。
注:同一个数据库中不能有两个同名的表,在不同的数据库中可以存在名字相同的表。
列:表中每列成为一个字段。
数据类型:所允许的数据的类型。每个表列都有相应的数据类型,它限制该列表中存储的数据。
行:表中的一个记录。
主键:唯一标识表中每行的这个列。(辨别某一东西的唯一标识) 表中主键满足的条件: * 任意两行都不具有相同的主键值; * 每个行都必须有一个主键值,主键值不允许null值。 主键最好的习惯: * 不更新主键列中的值; * 不重用主键列的值; * 不在主键列中使用可能会更改的值。
创建数据库
创建: CREATE DATABASE XXXX charset =(等号可以省) ‘utf8’;
查看创建过的数据库 : SHOW CREATE DATABASE XXXX;
删除数据库 DROP DATABASE XXXX;
创建已经存在的数据库 CREATE DATBASE IF NOT EXISTS XXXX;(不会报错, 会给一个警示) DROP DATABASE IF EXISTS XXXX;
创建一个学生信息表

 CREATE table students( 
id int auto_increment comment '主键',
name varchar(50) not null comment '姓名', 
age int not null comment '年龄',
 sex char(2) not null comment '性别', 
primary key (id)
 ) comment '学生信息';
查看创建的表信息 SHOW CREATE TABLE students;
插入单条 insert into 表名(属性,,) values('','',''); INSERT INTO students values(1504000,'小米',23,'女');
插入单条 insert into 表名(属性,,) values(" "," "," "), (' ',' ',' '), (' ',' ',' ')
添加完查看 SELECT * FROM students;
查看表结构 DESC students;
删除表 DELETE FROM 表名;& TRUNCATE 表名;

修改表名

rename table 表名1 to 表名2;

增加/删除列

alter table 表名 add 属性 类型 约束条件;
alter table custmers add phone int(11) not null first;
alter table custmers add phone int(11) not null after phone;
alter table 表名 drop column 属性;

修改字段信息:

alter table 表名 modify 属性 类型 约束条件;(修改某一列)
alter table students change name new_name varchar(5) not null;
alter table students modify sex char(2) firt;
update 表名 set email = 'abdc123@163.com' where id = 5;(修改某一行)

删除列/行

delete from 表名 where id = '5';(行)
alter table 表名 drop column phone;(列)

查找:

select * from students;
select name from 表名 where place like '北京%';
select count(*) from 表名;
select count(*) from 表名 where place like '北京%';

修改引擎

alter table 表名 engine = MyISAM;

MySQL数据类型

数据类型是数据的一种属性,其中包括整数型、浮点型、日期和时间类型、字符串类型和二进制数据类型。

整数类型

整数类型 取值范围
INYINT -128~127
SMALLINT -32768~32767
MEDIUMINT -8388608~8388607
INT -2147483648~2147483647
INTEGRE -2147483648~2147483647
BIGINT

日期时间

类型 范围
YEAR 1901~2155
DATE 1000-01~9999-12-31
TIME -839:59:59~839:59:59
DATETIME 1000-01 00:00:00~9999-12-31 23:59:59
字符串 字符串类型是在数据库中存储字符串的字符类型。
char类型的长度是固定的,长度可以在0~255的任意值。
varchar类型的长度是可变的。 
注意:如果char和varchar的长度是5,插入的值的长度超过5系统就会报错(1406)。

检索单个列

      例:select name from badboy;
      结束SQL语句,多条SQL语句必须以分号(;)分隔 关键字大写,所有列和表名使用小写

检索多个列

    例:select name,age,id from badboy;

select concat (name,id) from badboy;两个字符段在一格中出现 concat相当于join

检索所有列

select * from 表名;

检索不同的行

select distinct age from badboy;(去重)

分页

    select name from badboy limit 5;显示表中的5行

    select name from students limit10,10;

    limit 4 offset 3 (从行3开始取4行) = limit 3,4

使用完全限定的表名

    select [badboy.name](http://badboy.name) from stu_220.badboy;

排序(order by)

    select name, age from students order by age asc;

    select name,age from students order by age desc;

    select id, name from students order by age,name;

    selcet name,age from students order by age desc, name;

    select name,age birthday from students where sex='女' and age >25 order by birthday desc;

where 字句

    selcet name from students where age > 20;

    selcet name from students where age > 20 order by age;(order字句应放在where字句后)

不等于: <>/!= selcet name from students where age<>20;

between语句

    select name,upname from students where upname regexp '^[a-f]';

    select name,age from students where age between 18 and 20;

and操作符

    select name,age,place from students where age < 20 and place like '山西%';

or操作符

    select name, age from students where age=19 or age=20;
      IN select name,age form students where age in (19,20);

    select name,age form students where age between 18 and 19;
    select name,age form students where age>=18 and age <=19;

in操作符一般比or操作符清单执行更快 in的做大优点是可以包含其他select语句,使得能够更动态地建立where语句

三范式:

1NF, 第一范式
字段不能再分,就满足第一范式。
-- 2NF, 第二范式
每个表要有主键约束
满足第一范式的前提下,不能出现部分依赖。
消除符合主键就可以避免部分依赖。增加单列关键字。
-- 3NF, 第三范式
满足第二范式的前提下,不能出现传递依赖。
某个字段依赖于主键,而有其他字段依赖于该字段。这就是传递依赖。
将一个实体信息的数据放在一个表内实现。

TRUNCATE

TRUNCATE [TABLE] tbl_name
清空数据
删除重建表
区别:
1,truncate 是删除表再创建,delete 是逐条删除
2,truncate 重置auto_increment的值。而delete不会
3,truncate 不知道删除了几条,而delete知道。

mysql函数与条件判断函数

数学函数

name desc
ABS(X) 返回X的绝对值
MOD(X,Y) 返回X被Y除后的余数。
FLOOR(X) 返回不大于X的最大整数值。
CEILING(X) 返回不小于X的最小整数值
ROUND(X) 返回参数X的四舍五入的一个整数。

TRUNCATE(X,Y) 返回X中小数点Y位后面的数

字符串函数

name desc
LENGTH(str) 返回字符串str的长度。
CONCAT(str1,str2,...) 返回来自于参数连结的字符串。如果任何参数是NULL,返回NULL。可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。
TRIM(str) 删除字符串两侧的空格。
REPLACE(str,s1,s2) 字符串str中所有出的s1字符串由s2代替。
SUBSTRING(str,pos,len) 从字符串str的起始位置pos返回一个长度未len的子串。
REVERSE(str) 返回字符串反转顺序后的结果。
LOCATE(substr,str) 返回子串substr在字符串str第一个出现的位置(起始位置)

--#### 时间日期函数

now(), current_timestamp(); -- 当前日期时间
current_date(); -- 当前日期
current_time(); -- 当前时间
date('yyyy-mm-dd hh:ii:ss'); -- 获取日期部分
time('yyyy-mm-dd hh:ii:ss'); -- 获取时间部分
date_format('yyyy-mm-dd hh:ii:ss', '%d %y %a %d %m %b %j'); -- 格式化时间
unix_timestamp(); -- 获得unix时间戳
from_unixtime(); -- 从时间戳获得时间

条件判断函数

name desc exprote
IF(expr1,expr2,expr3) 如果 expr1 是TRUE 则返回 expr2,否则返回expr3 SELECT IF(age>30,1,0) FROM studentinfo;
IFNULL(v1,v2) 如果v1不为NULL则返回v1,否则返回v2 select IFNULL(phonenum,'123') as phone FROM studentinfo;
CASE value WHEN 条件 THEN 结果END 如果value的值满足WHERE后面的条件,则返回THEN后面的结果,否则返回ELSE后面的结果 SELECT student_name,CASE WHEN age>50 THEN age ELSE 0 END FROM studentinfo;

加密函数

name desc exprote
PASSWORD(str) 函数可以对字符串str进行加密。一般情况下,PASSWORD(str)函数主要是用来给用户的密码加密的。 SELECT PASSWORD('abcd');
MD5(str) MD5(str)函数可以对字符串str进行加密。MD5(str)函数主要对普通的数据进行加密。 SELECT MD5('abc')

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容