创建表.

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` (
  `idint(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)的更多相关文章

  1. Mysql数据库 day1

    Mysql数据库属于关系型数据库(mysql.oracle.sql server),非关系型数据库有DB2.Redis MySQL执行原理,逻辑分层.更改数据库处理引擎 作者:Stanley 罗昊 [ ...

  2. mysql5.7.35数据库迁移

    最近开发使用的测试环境的服务器使用的一台惠普E7300CPU\4G内存\160G西数硬盘配置,数据量近达20G!虽然作为测试数据库但也算是重要角色,一旦出现将严重影响工作.计划迁移至另一台做有RAID ...

  3. 学习python第二天数据库day1

    day01: 关键字:desc 作用:查看表结构(字段名,数据类型&长度) 举例: desc python1808_laoguo; 追加数据到表中:(新增操作) 关键字:insert into ...

  4. MySQL数据库双机热备------主-主备份配置

    MySQL数据库双机热备------主-主备份配置 实验环境: 主1数据库 192.168.1.1 centos6.5 x86_64 +MySQL5.5.35 主2数据库192.168.1.2  Wi ...

  5. PHP 经典面试题集

    这篇文章介绍的内容是关于PHP 经典面试题集 PHP 经典面试题集,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 结合我自己面试情况,面对的一些php面试题列举出来,基本上结合自己的看 ...

  6. java技术知识点

    1   自我介绍 2  做过的项目 (Java 基础) 3  Java的四个基本特性(抽象.封装.继承,多态),对多态的理解(多态的实现方式)以及在项目中那些地方用到多态 Java的四个基本特性 ◦  ...

  7. 第一篇:Mysql操作初级

    Mysql操作初级   Mysql操作初级 本节内容 数据库概述 数据库安装 数据库操作 数据表操作 表内容操作 1.数据库概述 数据库管理系统叫做DBMS 1.什么是数据库 ? 答:数据的仓库,如: ...

  8. 【毕业设计】基于Android的家校互动平台开发(内含完整代码和所有文档)——爱吖校推(你关注的,我们才推)

    ☆ 写在前面 之前答应大家的毕业答辩之后把所有文档贡献出来,现在答辩已过,LZ信守承诺,把所有文档开源到了GitHub(这个地址包含所有的代码和文档以及PPT,外层为简单的代码).还望喜欢的朋友们,不 ...

  9. 2019-04-22-day037-数据库的安装

    内容回顾 进程 线程 协程之间的相同点和不同点 进程 : 内存隔离 操作系统级别 开销大 可以利用多核 计算机中资源分配的最小单位 线程 : 内存共享 操作系统级别 开销中 Cpython解释器下不能 ...

随机推荐

  1. Storm介绍&实际开发注意事项

    一.使用组件的并行度代替线程池 Storm 自身是一个分布式.多线程的框架,对每个Spout 和Bolt,我们都可以设置其并发度:它也支持通过rebalance 命令来动态调整并发度,把负载分摊到多个 ...

  2. Batch Normalization 引出的一系列问题

    Batch Normalization,拆开来看,第一个单词意思是批,出现在梯度下降的概念里,第二个单词意思是标准化,出现在数据预处理的概念里. 我们先来看看这两个概念. 数据预处理 方法很多,后面我 ...

  3. RocketMq源码学习(一) nameService

    public class NamesrvStartup { public static Properties properties = null; public static CommandLine ...

  4. shell日常实战练习——通过监视用户登陆找到入侵者

    #!/usr/bin/bash #用户检测入侵工具 AUTHLOG=/var/log/secure if [[ -n $1 ]];then AUTHLOG=$1 echo "Using Lo ...

  5. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  6. Day13作业及默写

    1. 整理今天的博客,写课上代码,整理流程图. 博客链接--博客园 2. 写一个函数完成三次登陆功能: 用户的用户名密码从一个文件register中取出. register文件包含多个用户名,密码,用 ...

  7. Spring Boot 揭秘与实战(九) 应用监控篇 - 自定义监控端点

    文章目录 1. 继承 AbstractEndpoint 抽象类 2. 创建端点配置类 3. 运行 4. 源代码 Spring Boot 提供的端点不能满足我们的业务需求时,我们可以自定义一个端点. 本 ...

  8. 【算法基础】卡尔曼滤波KF

    kalman filter KCF 尺度变化是跟踪中比较基本和常见的问题,前面介绍的三个算法都没有尺度更新,如果目标缩小,滤波器就会学习到大量背景信息,如果目标扩大,滤波器就跟着目标局部纹理走了,这两 ...

  9. [LeetCode&Python] Problem 892. Surface Area of 3D Shapes

    On a N * N grid, we place some 1 * 1 * 1 cubes. Each value v = grid[i][j] represents a tower of v cu ...

  10. 编译Thrift支持golang

    本文已经是很久以前的文章了,也不知道新版本thrift如何 Thrift是一个跨语言的服务部署框架,Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译 ...