MySQL_基础+高级篇- 数据库 -sql -mysql教程_mysql视频_mysql入门_尚硅谷

1_12mysql的常见命令

DBMS分为两类:
	-基于共享文件系统的DBMS(Access)
	-基于客户机-服务器的DBMS(MySql,Oracle,sqlserver)

mysql的启动和停止服务:
	停止mysql服务:
		net stop mysql

	启动mysql服务:
		net start mysql

mysql的登陆和退出:
	进入mysql:
		mysql -h localhost -P 3306 -u root -p111(111是我设置的密码)
										并且-p和密码之间不能有空格
		mysql -u -p111(这样也可以)
		mysql [-h主机名 -P端口号] -u用户名 -p密码 
				本机可省略
	退出mysql:
		exit和quit


mysql的常见命令汇总:
	1.查看当前所有的数据库
		show databases;
	2.打开指定的库
		use databases;
	3.查看当前库的所有表
		show tables
	4.查看其它库的所有表
		show tables from 库名;
	5.创建表
		create table 表名(
			列名 列类型,
			列名 列类型,
			...
		);
	6.查看表结构
		desc 表名
	7.查看服务器的版本
		mysql>select version();
mysql的常见命令:
	show databases;(mysql命令以分号结尾)
		+--------------------+
		| Database           |
		+--------------------+
		| information_schema |(保存原数据信息)
		| mysql              |(
		| performance_schema |(性能信息)
		| test               |(空的没有表)
		+--------------------+

	use test(指定的库名);
		Database changed

	show tables;

	show tables from mysql;(并没有进入mysql库)
		()		(数据库名称)
		+---------------------------+
		| Tables_in_mysql           |
		+---------------------------+
		| columns_priv              |
		| db                        |
		| event                     |
		| func                      |
		| general_log               |
		| help_category             |
		| help_keyword              |
		| help_relation             |
		| help_topic                |
		| host                      |
		| ndb_binlog_index          |
		| plugin                    |
		| proc                      |
		| procs_priv                |
		| proxies_priv              |
		| servers                   |
		| slow_log                  |
		| tables_priv               |
		| time_zone                 |
		| time_zone_leap_second     |
		| time_zone_name            |
		| time_zone_transition      |
		| time_zone_transition_type |
		| user                      |
		+---------------------------+

	select database();<<查看当前所在的库>>
		+------------+
		| database() |
		+------------+
		| test       |
		+------------+
		1 row in set (0.00 sec)

				(表名自己定义)
	create table stuinfo(
		->id int,
		->name varchar(20));

		Query OK, 0 rows affected (0.02 sec)

		show tables;
			+----------------+
			| Tables_in_test |
			+----------------+
			| stuinfo        |
			+----------------+
			1 row in set (0.00 sec)

	desc stuinfo;(看表的结构)
		+-------+-------------+------+-----+---------+-------+
		| Field | Type        | Null | Key | Default | Extra |
		+-------+-------------+------+-----+---------+-------+
		| id    | int(11)     | YES  |     | NULL    |       |
		| name  | varchar(20) | YES  |     | NULL    |       |
		+-------+-------------+------+-----+---------+-------+
		2 rows in set (0.02 sec)
		
	select * from stuinfo;(*代表所有,及所有存在于stuinfo的数据)
		Empty set (0.00 sec)

	
	insert into stuinfo(id,name) values(2,'rose');
		+------+------+
		| id   | name |
		+------+------+
		|    1 | john |
		|    2 | rose |
		+------+------+
		2 rows in set (0.00 sec)

	update stuinfo set name='lilei' where id=1;
		+------+-------+
		| id   | name  |
		+------+-------+
		|    1 | lilei |
		|    2 | rose  |
		+------+-------+
		2 rows in set (0.01 sec)

	delete from stuinfo where id=1;
		+------+------+
		| id   | name |
		+------+------+
		|    2 | rose |
		+------+------+
		1 row in set (0.00 sec)

	select version();(查看mysql的版本)
		+-----------+
		| version() |
		+-----------+
		| 5.5.62    |
		+-----------+
		1 row in set (0.00 sec)

========================================================================================================================================================================================================================================================================

2_15mysql语法规范介绍

mysql
	1.不区分大小写,但建议关键字大写,表名,列名小写
	2.每条命令最好用分号结尾
	3.每条命令根据需要,可以缩进,换行
	4.注释
		--单行注释:#注释文字
		--单行注释:-- 注释文字(注意有空格)
		--多行注释:/* 注释文字 */

========================================================================================================================================================================================================================================================================

3_17图形化用户界面客户端的介绍

在这里插入代码片

========================================================================================================================================================================================================================================================================

4_18四种表达介绍


employees  员工表
	栏位:
		employee_id int(6)                 员工编号
		first name, varchar (20), Nullable        名
		last name, varchar(25), Nullable        姓
		email, varchar(25), Nullable            邮箱
		phone number, varchar(20), Nullable    电话号码
		job id, varchar(10) Nullable    工种编号
		salary, double(10,2), Nullable        月薪
		commission pct, double(4, 2), Nullable    奖金率
		manager id, int(6), Nullable        上级领导的员工编号
		department_id, int(4), Nullable    部门编号
		hiredate, datetime, Nullable    入职日期

departments  部门表
	栏位
		department_id, int(4)   部门编号
		department name, varchar(3), Nullable  部门名称
		manager id int(), Nullable  部门领导的员工编号
		location id, int(4), Nullable  位置编号

locations 位置表
	栏位
		location id, int(11)        位置编号
		street_ address, varchar(40), Nullable    街道
		postal_code, varchar(12), Nullable    邮编
		city, varchar(30), Nullable    城市
		state province, varchar(25), Nullable 州/省
		country_id, varchar(2), Nullable    国家编号


jobs              工种
	栏位
job_id, varchar(10)    工种编号   
job_title, varchar(35), Nullable    工种名称
min salary, int(6), Nullable    最低工资
max salary, int(6), Nullable    最高工资

========================================================================================================================================================================================================================================================================

5_基础查询介绍

进阶1:基础查询
语法:
    select 查询列表 from 表名;

特点:
    --查询列表可以是:表中的字段,常量值,表达式,函数
    --查询的结果是一个虚拟的表格(相当于java中的System.out.println("字符串")只是单纯的输出

查询表中字段:
    1.查询表中的单个字段(输出结果为last_name所在列的所有属性)
        SELECT last_name FROM employees;
    2.查询表中的多个字段
        SELECT last_name,salary,email FROM employees;
    3.查询标准的所有字段
        SELECT * FROM employees;


    5.查询时的细节
        
        上面并没有写use myemployees
        进入myemployees库
        是因为已经通过软件点击进入了

        --`(着重符)不是'(单引号),`是用来表示一个字段的

        --如何执行命令:   
            你需要通过鼠标,对代码进行选中,然后运行选中代码


查询常量
    1.查询常量值
        SELECT 100;
        SELECT 'john';
    
    2.查询表达式
        SELECT 100%98;

    3.查询函数(方法)
        SELECT    VERSION();(查询当前mysql的版本)


7.起别名
    好处:
        --方便理解,提高可读性
        --如果要查询的字段有重名情况,使用别名可以区分开来
    方式一:
        SELECT first_name AS,last_name ASFROM employees;
    方式二:
        SELECT first_name 姓,last_name 名 FROM employees;
    案例:查询salary,显示结果为out put
        SELECT salary AS `out put` FROM employees;
        SELECT salary AS 'out put' FROM employees;
        SELECT salary AS "out put" FROM employees;
        这三个好像都行没看出来区别

在这里插入图片描述

========================================================================================================================================================================================================================================================================

6_24去重

去重:
案例:查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees;
加号的作用(+)
java中的加号:
--运算符:
两个操作数都为数值型
--连接符:
只要有一个操作数为字符串
mysql中的+号:
仅仅只有一个功能:运算符
--SELECT 100+50;--SELECT '123'+90;(其中一方为字符型,试图将字符型数值转换为数值型
           如果转换成功,则继续做加法运算)
--SELECT 'JOHO'+90;        如果转换失败,则将字符型数值转换成0)
  SELECT null+10;          如果其中一方为null,则结果肯定为null)
在mysql中对于字符串的拼接采用 concat

案例:查询员工名和姓氏连接成一个字段,并显示为姓名
SELECT CONCAT(first_name,last_name) AS 姓名
FROM employees;

========================================================================================================================================================================================================================================================================

7_27<<案例详解>>基础查询



测试1.下面的语句是否可以执行成功
              select last_name, job_id, salary as sal
              from employees;
执行可以通过,只将salary换名成sal
SELECT last_name AS a, job_id AS job, salary AS sal
FROM employees;        (这样也行)
2.下面的语句是否可以执行成功

               select *from employees;
可以执行成功,employees为表 *匹配的是表中所有的列
这样不可以:
select * from myemployees;
myemployees为数据库,想要看数据库中的表
使用:
show tables;
3.找出下面语句中的错误
select employee_id, last_name,
salary *12 AS "ANNUAL SALARY"
from employees;
4.显示表 departments的结构,并查询其中的全部数据
查看表结构:DESC departments;
输出表的全部数据:SELECT * FROM departments;

5.显示出表employees中的全部 job_id(不能重复)
SELECT DISTINCT job_id FROM employees;
6.显示出表 employees的全部列,各个列之间用逗号连接,列头显示成OUT_PUT
如果直接这样写输出结果为:
SELECT CONCAT(employee_id,first_name,last_name,email,phone_number,
job_id,salary,commission_pct,manager_id,department_id,hiredate) AS OUT_PUT
FROM employees;
结果有许多为空,原因在于有一列包含许多空值,导致运算时结果为null
更改代码



SELECT last_name AS a, job_id AS job, salary AS sal
FROM employees;

#错误代码,想要查看数据库中的表直接show tables;
#select * from myemployees;

SHOW TABLES;

SELECT employee_id, last_name,
	salary *12 AS "ANNUAL SALARY"
FROM employees;



#departments是表
#想要看表的结构无法使用show
SELECT * FROM departments;

#上面相当于直接把表输出来了
#但是我只想要看他的结构
DESC departments;


#查询表中的全部数据
SELECT * FROM departments;


#输出employees中的全部 job_id
SELECT job_id FROM employees;

#输出employees中的全部 job_id且不重复
SELECT DISTINCT job_id FROM employees;


#显示出表 employees的全部列
SELECT * FROM employees;

#显示出表 employees的全部列,各个列之间用逗号连接,列头显示成OUT_PUT

SELECT CONCAT(employee_id,first_name,last_name,email,phone_number,
	job_id,salary,commission_pct,manager_id,department_id,hiredate) AS OUT_PUT
FROM employees;

#如果为null,则将其对应的值改为0
SELECT IFNULL(commission_pct,0) FROM employees;

SELECT CONCAT(employee_id,first_name,last_name,email,phone_number,
	job_id,salary,IFNULL(commission_pct,0),IFNULL(manager_id,0),department_id,hiredate) AS OUT_PUT
FROM employees;

========================================================================================================================================================================================================================================================================

8_28条件查询介绍


/*
	语法:
		select 
			查询列表
		from
			表名
		where
			筛选条件;(可以理解为,满足筛选就是我可以到的地方(可以输出))
			
	执行顺序:
		1.首先from表名,这是最外层确定表是否存在
			如果存在则将定位到表
		2.where 筛选条件
			看一下那些行满足条件
		3.select查询列表
			得到想要的列
			
	分类:
		--按条件表达式筛选:	
			条件运算符:> < = !=(<>也可以这样写) >= <=
		--按逻辑表达式筛选:
			逻辑运算符:&& || !
					and or not
		--模糊查询
			like
			between and
			in
			is null
		
*/

#一.按条件表达式筛选:
	#案例1:查询工资>12000的员工姓名
SELECT CONCAT(first_name,last_name) AS 姓名
FROM employees
WHERE (salary>12000);


	#案例2:查询部门编号不等于90号的员工名和部门编号
SELECT CONCAT(first_name,last_name) AS 姓名,department_id AS 部门编号
FROM employees
WHERE department_id!=90;


#二.按逻辑表达式筛选
	#案例1:查询工资在10000到20000之间的员工名,工资,以及奖金
SELECT CONCAT(first_name,last_name) AS 姓名,salary,`commission_pct`
FROM employees
WHERE (salary>=10000 AND salary<=20000);

	#案例2:查询部门编号不是在90-110之间,或者工资高于15000的员工信息
	
SELECT *
FROM employees52
WHERE (NOT (90<=department_id AND department_id<=110) OR salary>15000);


#三.模糊查询
/*
	like
		特点:
			1.一般和通配符搭配使用
		通配符:
			%任意多个字符,包含0个字符
			_任意单个字符
	between and 
		1.使用包含between and可以提高语句的简洁度
		2.包含临界值
		3.两个临界值小的在前,大的在后
	in
		1.判断某字段的值是否属于in列表中的某一项
		2.使用in提高语句简洁度
		3.in列表的值类型(必须统一或兼容)
		4.in列表中不支持通配符(因为不是like(像)而是in(等于))
	if null/if not null
		1.=不能判断null值
		2.is后只支持null,并不支持其他
*/


#like
	#案例1:查询员工名中包含字符a的员工信息
SELECT *
FROM employees
WHERE (last_name LIKE "%a%");
	#案例2:查询员工名中第三个字符为a的,第五个字符为a的员工名和工资
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值