美文网首页
数据库第一周

数据库第一周

作者: _Clown_ | 来源:发表于2018-09-14 11:00 被阅读0次

mysql的命令和查询语句:

启动
service mysql start
停止
service mysql stop
重启
service mysql restart
查看mysql服务状态
service mysql status

登陆系统

mysql -u 用户名(root) -p      输入密码
show databases;  查看数据库
USE 库名       选中数据库
show tables;     查看表格式信息
select * from 表名      查看表里面的信息

数据库的操作

#查看数据库下所有的存储引擎:
SHOW ENGINES;
#查看当前数据库使用的存储引擎:
SHOW VARIABLES LIKE 'default_storage_engine';
#修改默认的存储引擎:
SET default_storage_engine=MYISAM;
utf-8:万国码,一般情况下不会出现乱码情况,以后要使用的也是utf-8编码
#创建数据库:
CREATE DATABASE|SCHEMA 数据库名称 CHARSET='utf8';
#创建数据库,如果不存在才创建
CREATE DATABASE|SCHEMA IF NOT EXISTS 数据库名称 CHARSET='utf8';
#可以修改数据库
ALTER DATABASE 数据库名称 CHARSET=字符集;
#切换数据库
USE 数据库名称;
#删除数据库
DROP DATABASE 数据库名称;
#当数据库存在的情况下删除数据库
DROP DATABASE IF EXISTS 数据库名称;
#查看所有数据库:
SHOW DATABASES;
#查看当前数据库
SELECT DATABASE();

如何创建表

CREATE TABLE 表名 (
    列  类型  约束  属性,
    列  类型  约束  属性,
    列  类型  约束  属性
);
涉及到的约束:主键,DEFAULT,NOT NULL
属性:自增->AUTO_INCREMENT

SHOW TABLES;

SHOW CREATE TABLE 表名 \G;

DESC 表名 

DESC 表名 列

ALTER TABLE 表名 ADD 列  类型  约束
ALTER TABLE 表名 ADD(列  类型  约束,....)

ALTER TABLE 表名 MODIFY 列的名称 数据类型

关于表的操作:

CREATE TABLE tablename (
    列 类型 约束 属性
    ......
)

#添加新的列
ALTER TABLE tablename ADD 列 类型 约束 ..
ALTER TABLE tablename ADD(列 类型 约束 ..,列 类型 约束 ..)

#修改列
ALTER TABLE tablename MODIFY 列名 新的类型 新的约束

#修改列名:
ALTER TABLE tablename CHNAGE 列名 new列名 类型 约束 属性

#删除列
ALTER TABLE tablename DROP 列名

#修改默认值:
ALTER TABLE tablename ALTER 列名 SET DEFAULT value;
#删除默认值:
ALTER TABLE tablename ALTER 列明 DROP DEFAULT

#修改表名
ALTER TABLE oldtablename RENAME AS newtablename

#修改表名:
RENAME TABLE oldtablename TO newtablename

#删除表
DROP TABLE 表名

#复制表(只会复制表的结构,不会复制表的数据)
CREATE TABLE [IF NOT EXISTS] 表名 LIKE 要复制的表名

DML:数据库操作语言:对于表中的数据做增,删,改

#插入数据(全列插入)(值必须跟表中的列的顺序和类型保持一致)
INSERT INTO 表名 VALUES (值,值,值....) 

#插入数据(部分插入)(值必须跟前面要插入的列的顺序和类型保持一致)
INSERT INTO 表名(列名,列名,....) VALUES (值,值,值....) 

#多条插入:
INSERT INTO 表名(列名,列名,....) VALUES (值,值,值....),(值,值,值....) ....

#将一个表的数据插入到另一个表中
INSERT INTO 表名(列名,列名,.....) SELECT 列名,列名,... from copy_表名;

#删除数据
DELETE FROM 表名 WHERE 条件;
DELETE FROM 表名;

#另一种方式删除表中的数据
TRUNCATE TABLE 表名;

区别:
DELETE:即可以指定条件删除,也可以删除全部(不会删除表,只会删除表里面的数据)
使用DELETE删除的数据,还可以找回

TRUNCATE:只能删除全部,(先把表完全删除,然后在创建一个新的表)
删除的数据,不能找回了

#数据的更新
UPDATE 表名 SET 列名=newvalue,[列名=newvalue,....] WHERE 条件 [and 条件 ....]

SQL:数据库查询语言:

SELECT * FROM 表名;
SELECT 列名,列名,.. FROM 表名;
SELECT 表.列,表.列,... FROM 数据库名.表名

查询语句:
#WHERE字句:
# = 直等:
SELECT * FROM 表名 WHERE 列明=value;

# != 不等于
SELECT * FROM 表名 WHERE 列明 != value;

# <> 不等于
SELECT * FROM 表名 WHERE 列名 <> value;

# < 小于
SELECT * FROM 表名 WHERE age < 30;

# <= 小于等于
SELECT * FROM 表名 WHERE age <= 30;

# > 大于
SELECT * FROM 表名 WHERE age > 30;

# >= 大于等于
SELECT * FROM 表名 WHERE age >= 30;

# BETWEEN num AND num (返回符合某个范围的记录,左右闭合)
SELECT * FROM 表名 WHERE age BETWEEN 20 AND 40;

#检查空值
SELECT * FROM 表名 WHERE 列名 IS NULL;

#取反,查询出所有不为NULL值的记录
SELECT * FROM 表名 WHERE 列名 IS NOT NULL;

#AND 与(同时满足)
SELECT * FROM 表名 WHERE 列名1=value AND 列名2=value;

#OR 或 (满足其中一个即可)
SELECT * FROM 表名 WHERE 列名1=value OR 列名2=value;

#IN (范围查询)
SELECT * FROM 表名 WHERE 列名 IN(值,值,...)

#NOT (非,取反)

SELECT * FROM 表名 WHERE 列名 NOT IN(值,值,...)

AND和OR的组合使用(AND的优先级比or要高,所以在使用的时候要注意)

例子:假如我们要找id大于等于2或则性别为男,并且薪资大于8000
SELECT * FROM employee WHERE (id>=2 OR gender='男') AND salary > 8000
如果不加():查找性别为男并且薪资大于8000,或则id大于等于2
SELECT * FROM employee WHERE id>=2 OR gender='男' AND salary > 8000

模糊查询(通配符查询) 跟LIKE 配合使用

%:表示任意字符,出现任意次数.
1.查询出姓名中包含李的的记录
SELECT * FROM 表名 WHERE name LIKE '%李%';

_:任意字符,有且只有一次.
2.查询出姓为李并且姓名是由三个汉字组成的记录
SELECT * FROM 表名 WHERE name LIKE '李_ _';

3.查询出姓为李并且姓名至少由2个汉字组成的记录
SELECT * FROM 表名 WHERE name LIKE '李_%'; 

在mysql中如何使用正则(REGEXP)(mysql对一些简单的正则支持的比较好,复杂的正则,可能会有些问题)

SELECT * FROM 表名 WHERE 列名 REGEXP '正则表达式'
#排序 order by
升序:ASC 
降序:DESC
SELECT * FROM 表名 ORDER BY 列名 方向;
SELECT * FROM 表名 ORDER BY 列名 方向,列名 方向,列名 方向;
#排序:
升序:ASC (小->大,默认情况下不设置,就是升序)
降序:DESC(大->小)

#单个使用:
#升序
SELECT * FROM 表名 ORDER BY 列名 (ASC);

#将序
SELECT * FROM 表名 ORDER BY 列名 DESC;

#组合使用:(无论是升序还是降序,都需要明确的指明方向)
SELECT * FROM 表名 ORDER BY 列名1 DESC,列名2 ASC;

#如果要使用中文排序(姓名)
SELECT * FROM 表名 ORDER BY CONVERT(stu_name USING gbk)

#LIMIT (限制查询)
#offset:偏移量,从哪一条开始返回,不包含这一行
#num:返回多少行数据
SELECT * FROM 表名 LIMIT offset,num;

#从第一行开始返回,返回指定行数的数据
SELECT * FROM 表名 LIMIT num;

#LIMIT和ORDER BY组合使用
#可以查询最大,
SELECT * FROM 表名 ORDER BY 列名 DESC LIMIT 1;

# 最小值
SELECT * FROM 表名 ORDER BY 列名 ASC LIMIT 1;

#mysql常见的聚合函数
MAX():最大
MIN():最小
AVG():平均值
COUNT():总数行数
SUM():求和(一列的和)

单独使用聚合函数
SELECT MAX(列) as 别名 FROM 表名;
SELECT MIN(列) as 别名 FROM 表名;
SELECT AVG(列) as 别名 FROM 表名;
SELECT COUNT(1) as 别名 FROM 表名;
SELECT SUM(列) as 别名 FROM 表名;

综合使用:
SELECT COUNT(1) as 别名, SUM(列) as 别名,AVG(列) as 别名 FROM 表名;

相关文章

  • 前期总结及后期展望

    暑假已经过去一半多了,第一周去郑州实习,第二周放假回家,第三周把出现问题的数据库卸掉重新安装然后就是敲数据库,然后...

  • 初步接触ssh

    2017.2.6到公司第一周,装了环境,了解了项目团队,接触了项目部分代码,学习了新知识。 任务是:将数据库中指定...

  • 数据库第一周

    mysql的命令和查询语句: 登陆系统 数据库的操作 如何创建表 关于表的操作: DML:数据库操作语言:对于表中...

  • 【MySQL学习】No.0 常见错误记录

    强化课程的第一周主要是学写了MYSQL相关知识,记录下在学习过程中遇到的问题: 错误提示:MySQL数据库报错10...

  • 一周

    放假第一周,状态还可以 今天去了校内 看了看我们组的学习 有些开始走数据库的感觉有点迷茫 我感觉我真的有点失职 最...

  • 工程中心第一周学习总结

    这一周学习的一些随笔主要是围绕数据库和Redis 姜云瀚_第一周学习总结 一、MySQL主从复制原理和实现 负载平...

  • 新学期的第二周

      经过了第一周的适应,第二周,我们加快了自己的学习进度,第二周,我结束了对于数据库的学习,更加深入的理解了JDB...

  • 【Geekband】系统设计.md

    第一次接触大数据系统相关知识,完全零起点,共参考。 第一周 1. 分布式系统 2. CAP理论 3. 数据库系统 ...

  • 2018· W01周总结(1.1-1.7)

    新年第一周,鸡血满满的第一周,内心充满憧憬的第一周,想要更加努力的第一周。 一、本周做了什么? 1、身体健康 跑步...

  • 稍作调整

    距离考核完数据库到现在,已经一周的时间了,这一周,也是开学后的第一周,这一周,又让我对一些事物的观点产生了变化。 ...

网友评论

      本文标题:数据库第一周

      本文链接:https://www.haomeiwen.com/subject/wlebgftx.html