Day 35数据库(Day1)
创建表.
create table student( id int not null auto_increment PRIMARY key, name archar(250) not null, age int not null, sex enum("男","女") not null default"男", salary double(10,2) not null )ENGINE = INNODB default charset =utf8;
数据库
在cmd命令下
C:\Users\ipc>mysql -uroot -p
Enter password: ******
二、创建一个数据库
create database db1
三 、查看database
show DATABASES
查看数据库
desc t1
查看数据库
show create TABLE t1
* select * from t1; -- 查询表中数据
desc t1; -- 查看表结构
show create table t1; -- 显示表的创建信息
以上三个命令查看
删除数据库
drop database db2
复制表
create TABLE t2 SELECT * from t1
只是简单复制表,不会复制key值等等.
create table t2 select * from t1; -- 复制表结构和表数据
* create table t3 LIKE t1; -- 只复制表结构
修改表
ALTER TABLE t1 add id int not null PRIMARY key ; -- 添加字段
ALTER TABLE t1 MODIFY salary double(10,3) not null DEFAULT 10; -- 修改字段类型与约束条件
ALTER TABLE t1 CHANGE salary sal double(10,3) not null DEFAULT 10; --修改字段名称和类型与约束条件
ALTER TABLE t1 DROP COLUMN sal; -- 删除指定字段
RENAME table t1 to t5;-- 改变表名称
重命名 表单
创建一个表格
create table t1(
name varchar(50) not
null
,
age
int
(10)
null
,
salary DOUBLE(5,2)
);
数据操作
在栏位里面的操作都可以在sql预览里看到.
修改数据操作
1.增
INSERT into t2(name,age) VALUES('小三',11); -- 指定字段插入
INSERT into t2 VALUES('凤',13,2.5); -- 整表字段插入
INSERT into t2 VALUES('凤',13,2.5),('凤',13,2.5),('凤',13,2.5),('凤',13,2.5),('凤',13,2.5);--插入多条
insert into t1 SELECT id,name from t2; -- 复制表数据
insert into t2(name,age) values('xiaosan',11)
2. 删 (就下面一个用法)
delete from t2 where age =11
删除表内的 age =1 的行.
3.改 (就update 一种用法)
update t2 set name ='111' , salary = 1 where age =11;更改name =111的名字的 salary 为 1 和age =11 。
update t2 set name ='111' 千万不要执行此命令,会把表内所有的name改成111 ,salary 改为1 。
4.查
创建表格
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
- - 创建表 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( ` id ` int ( 11 ) NOT NULL AUTO_INCREMENT, `name` varchar( 50 ) NOT NULL, `age` tinyint( 4 ) DEFAULT '0' , `sex` enum( '男' , '女' , '人妖' ) NOT NULL DEFAULT '人妖' , `salary` decimal( 10 , 2 ) NOT NULL DEFAULT '250.00' , `hire_date` date NOT NULL, `dept_id` int ( 11 ) DEFAULT NULL, PRIMARY KEY (` id `) ) ENGINE = InnoDB AUTO_INCREMENT = 13 DEFAULT CHARSET = utf8; - - 创建数据 - - 教学部 INSERT INTO `person` VALUES ( '1' , 'alex' , '28' , '人妖' , '53000.00' , '2010-06-21' , '1' ); INSERT INTO `person` VALUES ( '2' , 'wupeiqi' , '23' , '男' , '8000.00' , '2011-02-21' , '1' ); INSERT INTO `person` VALUES ( '3' , 'egon' , '30' , '男' , '6500.00' , '2015-06-21' , '1' ); INSERT INTO `person` VALUES ( '4' , 'jingnvshen' , '18' , '女' , '6680.00' , '2014-06-21' , '1' ); - - 销售部 INSERT INTO `person` VALUES ( '5' , '歪歪' , '20' , '女' , '3000.00' , '2015-02-21' , '2' ); INSERT INTO `person` VALUES ( '6' , '星星' , '20' , '女' , '2000.00' , '2018-01-30' , '2' ); INSERT INTO `person` VALUES ( '7' , '格格' , '20' , '女' , '2000.00' , '2018-02-27' , '2' ); INSERT INTO `person` VALUES ( '8' , '周周' , '20' , '女' , '2000.00' , '2015-06-21' , '2' ); - - 市场部 INSERT INTO `person` VALUES ( '9' , '月月' , '21' , '女' , '4000.00' , '2014-07-21' , '3' ); INSERT INTO `person` VALUES ( '10' , '安琪' , '22' , '女' , '4000.00' , '2015-07-15' , '3' ); - - 人事部 INSERT INTO `person` VALUES ( '11' , '周明月' , '17' , '女' , '5000.00' , '2014-06-21' , '4' ); - - 鼓励部 INSERT INTO `person` VALUES ( '12' , '苍老师' , '33' , '女' , '1000000.00' , '2018-02-21' , null); |
1 . 简单查询
select * from person
查询所有
select name,age from person;
查询到name 和age 两个列
select p.name ,p.salary , p.salary+p.salary*0.1 from person as p
-- 别名+字段运算
select DISTINCT salary,name from person;
--去除两个都相同的字段
2.条件查询
-- 逻辑运算符 < > <= >= != <> =
-- is null ,is not null
-- and OR ()
select *from person where age > 30
select *from person where age < 30
select * from person where age between 20 and 30
select * from person where dept_id is null;
select * from person where dept_id = null; 语法错误.
select * from person where salary> 5000 and age <=30
3.区间查询
SELECT * FROM person where salary >=5000 and salary<=10000;
-- 推荐使用 :
--ps:前后包含
SELECT * FROM person where salary between 5000 and 10000;
4. 集合查询(in not in )
select * from person where age =20 or age =23 or age =30
select * from person where age not in (20,30,23)
5. 模糊查询 like
select * from person where name like '月%' -----以月开头.
select * from person where name like '%月' ----以月结尾
SELECT * FROM person where name LIKE '%月%'; -- 包含
SELECT * FROM person where name LIKE '_l%'; -- "_"表示占位符
6. 排序
select * from person order by salary asc ,age desc ;
先以第一个salary 条件为主,如果第一个salary 相等, 以age进行排序.
select * from person order by convert(name using gbk )---中文排序, 也包括英文.
7.聚合函数
select MAX(salary) from person;
select MIN(salary) from person;
select AVG(salary) from person;
select SUM(salary) from person;
select COUNT(*) from person;
8.分组查询group by , having
select * from person group by dept_id;
having 和where 的意思是一样的 ,where 的优先级比groupby 高
where 与 having区别:
#执行优先级从高到低:where > group by > having
#1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。
#2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段
select count(id),name,dept_id from person group by dept_id;
select count(id),dept_id,avg(salary) from person GROUP BY dept_id HAVING avg(salary) >=5000 ;
9.分页查询 limite
SELECT * FROM person LIMIT 1,4 # 1 表示从第二个开始 ,一个显示五行
10 正则表达式.
SELECT * FROM person where name REGEXP '^a';
SELECT * FROM person where name REGEXP 'n$';
SELECT * FROM person where name REGEXP '[a,e,n]';
SELECT * FROM person where name REGEXP '[^alex]'; ##所有非alex的
SELECT * FROM person where name REGEXP '^w.*i$';
11. SQL 语句关键字的执行顺序
create user 'alex'@'127.0.0.1' IDENTIFIED by '123'; -- 创建用户
grant SELECT,UPDATE,DELETE ON db1.* to 'alex'@'127.0.0.1';
GRANT all PRIVILEGES ON db1.* to 'alex'@'127.0.0.1'; -- 所有权限
FLUSH PRIVILEGES; -- 刷新权限
update mysql.user set password=password('123456') where user='root';
1. 创建用户
create user 'alex'@'127.0.0.1' IDENTIFIED by '123'
2. 为用户授予权限
grant SELECT,UPDATE,DELETE ON db1.* to 'alex'@'127.0.0.1';
3. 授予所有权限
GRANT all PRIVILEGES ON db1.* to 'alex'@'127.0.0.1'
4. 权限刷新
flush PRIVILEGES
5 更改密码
cmd命令下 >mysqladmin -uroot -p123 password 1234567
123 是之前密码,1234567 是新密码
登录账户 在cmd 命令下 :
#mysql -uroot -p 命令.
6. 忘记密码操作.
1 . cmd 命令关闭mysql服务:
net stop mysql56
2 . 跳过mysql 服务
mysqld --skip-grant-tables
3. 重新打开一个窗口cmd 直接输入 mysql ,直接就进来了。
cmd #mysql
4.重新修改密码
update mysql.user set password=password('123') where user= 'root'; ---这是5.6 的版本用法
update
mysql.
user
set
authentication_string=
password
(
'新密码'
)
where
user
=
'用户名'
---这是5.7版本的用法. 5.刷新一下
flush
privileges
6.重启下mysql (先把mysqld程序关掉)
net start mysql56
查看下密码库
中文乱码问题
1. 查询字符编码
show VARIABLES like 'char%'
2.制服乱码
#修改方法: #1. 创建my.ini文件,放在mysql根路径下 #2. 在该文件中添加以下内容即可: #3.添加此文件后需要重新启动服务,以保证此文件生效 ------------------------------------------------------------ [client] default-character-set=utf8 [mysql] #设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 #允许最大连接数 max_connections=200 #服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 #创建新表时将使用的默认存储引擎 default-storage-engine=INNODB #解决mysql在执行sql语句后出现1055错误,sql_mode = only_full_group_by不相容 sql_mode='NO_ENGINE_SUBSTITUTION' 乱码已死
注意:如果使用的是mysql5.7版本,则需要创建my.ini文件,5.7版本以前数据库自带my,ini文件,直接改动编码即可.
目前最稳定与常用的数据库版本为(5.6版本与5.5版本)
Day 35数据库(Day1)的更多相关文章
- Mysql数据库 day1
Mysql数据库属于关系型数据库(mysql.oracle.sql server),非关系型数据库有DB2.Redis MySQL执行原理,逻辑分层.更改数据库处理引擎 作者:Stanley 罗昊 [ ...
- mysql5.7.35数据库迁移
最近开发使用的测试环境的服务器使用的一台惠普E7300CPU\4G内存\160G西数硬盘配置,数据量近达20G!虽然作为测试数据库但也算是重要角色,一旦出现将严重影响工作.计划迁移至另一台做有RAID ...
- 学习python第二天数据库day1
day01: 关键字:desc 作用:查看表结构(字段名,数据类型&长度) 举例: desc python1808_laoguo; 追加数据到表中:(新增操作) 关键字:insert into ...
- MySQL数据库双机热备------主-主备份配置
MySQL数据库双机热备------主-主备份配置 实验环境: 主1数据库 192.168.1.1 centos6.5 x86_64 +MySQL5.5.35 主2数据库192.168.1.2 Wi ...
- PHP 经典面试题集
这篇文章介绍的内容是关于PHP 经典面试题集 PHP 经典面试题集,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 结合我自己面试情况,面对的一些php面试题列举出来,基本上结合自己的看 ...
- java技术知识点
1 自我介绍 2 做过的项目 (Java 基础) 3 Java的四个基本特性(抽象.封装.继承,多态),对多态的理解(多态的实现方式)以及在项目中那些地方用到多态 Java的四个基本特性 ◦ ...
- 第一篇:Mysql操作初级
Mysql操作初级 Mysql操作初级 本节内容 数据库概述 数据库安装 数据库操作 数据表操作 表内容操作 1.数据库概述 数据库管理系统叫做DBMS 1.什么是数据库 ? 答:数据的仓库,如: ...
- 【毕业设计】基于Android的家校互动平台开发(内含完整代码和所有文档)——爱吖校推(你关注的,我们才推)
☆ 写在前面 之前答应大家的毕业答辩之后把所有文档贡献出来,现在答辩已过,LZ信守承诺,把所有文档开源到了GitHub(这个地址包含所有的代码和文档以及PPT,外层为简单的代码).还望喜欢的朋友们,不 ...
- 2019-04-22-day037-数据库的安装
内容回顾 进程 线程 协程之间的相同点和不同点 进程 : 内存隔离 操作系统级别 开销大 可以利用多核 计算机中资源分配的最小单位 线程 : 内存共享 操作系统级别 开销中 Cpython解释器下不能 ...
随机推荐
- 在嵌入式设计中使用MicroBlaze(Vivado版本)(转)
原文Xilinx官方文档<ug898-vivado-embedded-design>第三章 一.MicroBlaze处理器设计介绍(略) 二.创建带有MicroBlaze处理器的IP设计 ...
- DevExpress v18.1新版亮点——DevExtreme篇(一)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExtreme JavaScript Controls v18.1 的新功能 ...
- 对称加密-java实现
主要步骤如下: 1.利用SecretKeyFactory.getInstance("加密算法")创建密钥工厂,加密算法如"DES","AES" ...
- 最全的javascriptt选择题整理
一.单项选择(165题) 1.HTML是什么意思? A)高级文本语言 B)超文本标记语言 C)扩展标记语言 D)图形化标记语言 2.浏览器针对于HTML文档起到了什么作用? A)浏览器用于创建HTML ...
- hdu 5228 OO’s Sequence(单独取数算贡献)
Problem Description OO has got a array A of size n ,defined a function f(l,r) represent the number o ...
- 20165326 java第五周学习笔记
第五周学习笔记 ch7 内部类(&外嵌类) 内部类的类体不可以声明类变量和方法 内部类如同类的变量或方法 内部类和外嵌类在编译时生成两个class文件 匿名类 某个类的一个子类没有明显的用类声 ...
- XGboost学习总结
XGboost,全称Extrem Gradient boost,极度梯度提升,是陈天奇大牛在GBDT等传统Boosting算法的基础上重新优化形成的,是Kaggle竞赛的必杀神器. XGboost属于 ...
- WIFI探针 搞定
- 跨交换机划分vlan配置
实验要求:使两台交换机上同一vlan的主机能够通信,不同vlan的主机不能通信 拓扑如下: 涉及内容有: 1.vlan的创建和划分 2.端口trunk模式的设置 配置如下: Switch1 enabl ...
- 单交换机划分VLAN配置
实验要求:相同vlan的主机能够通信,不同vlan的主机不能通讯 拓扑如下: 涉及内容有: 1.端口trunk模式设置 2.VTP的创建和设置 3.vlan的划分 配置如下: A enable 进入特 ...