创建表.

create table student(
id int not null auto_increment PRIMARY key,
name archar() not null,
age int not null,
sex enum("男","女") not null default"男",
salary double(,) 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.查

创建表格 

-- 创建表
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 语句关键字的执行顺序

执行顺序: FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY ->limit  

权限

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.制服乱码

#修改方法:
#. 创建my.ini文件,放在mysql根路径下
#. 在该文件中添加以下内容即可:
#.添加此文件后需要重新启动服务,以保证此文件生效
------------------------------------------------------------
[client] default-character-set=utf8 [mysql] #设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = #允许最大连接数 max_connections= #服务端使用的字符集默认为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 43数据库(Day1)的更多相关文章

  1. day 43 数据库的密码的的更改如何操作

    day 43 数据库的密码的的更改如何操作 步骤: 1 首先看环境变量有没有配好 方法 查看计算机 高级系统设置 2 以上步骤完成后 运行 services  找到 mysql的停止 在启动 3,运行 ...

  2. Mysql数据库 day1

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

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

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

  4. Ubuntu12.04下Qt连接MySQL数据库

    本文介绍在Ubuntu12.04 (64 bit) 下使用Qt 4.8.2连接MySQL(Ver 14.14 Distrib 5.5.43)数据库. 1.安装 Qt 和 MySQL 若未安装以上软件, ...

  5. CoreData和SQLite多线程访问时的线程安全问题

    数据库读取操作一般都是多线程访问的.在对数据进行读取时,我们要保证其当前状态不能被修改,即读取时加锁,否则就会出现数据错误混乱.IOS中常用的两种数据持久化存储方式:CoreData和SQLite,两 ...

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

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

  7. DB2日常维护常用命令

    1.检查是否有僵尸进程 ps -emo THREAD | grep -i Z | grep -i 实例名 2.处理死锁  --第一步:查看所有死锁  db2 get snapshot for lock ...

  8. MySQL学习笔记(三)数据优化

    第1章 数据库优化简介1-1 MySQL优化简介 第2章 SQL语句优化2-1 数据准备 2-2 MySQL慢查日志的开启方式 2-3 MySQL慢查日志分析工具之 mysqldumpslow www ...

  9. Oracle HA 之 OGG部署流水

    1.GG组件及其功能简介:    manager进程:总管其他所以进程及处理相应GGSCI命令.    capture进程:从源端的联机日志文件或归档日志文件抓取commit的信息.    sourc ...

随机推荐

  1. 8-导弹拦截一(n^2 and nlogn)

    /*某国为了防御敌国的导弹袭击,研发出一套导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发拦截炮弹能够到达任意的高度,但是以后每一发拦截炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的多 ...

  2. 过滤输入htmlentities与htmlspecialchars用法

    过滤输入 (即来自所列数据源中的任何数据)是指,转义或删除不安全的字符.在数据到达应用的存储层之前,一定要过滤输入数据.这是第一道防线.假如网站的评论表单接收html,默认情况下 访客可以毫无阻拦地在 ...

  3. vc通过webbrowser操作ie元素

    1>需要引用 webbrowser2.h,mshtml.h //m_web绑定的webbrowser的变量 CComQIPtr<IHTMLDocument2,&IID_IHTMLD ...

  4. Spring框架的AOP技术之通知类型

    1. 通知类型 * @Before -- 前置通知 * @AfterReturing -- 后置通知 * @Around -- 环绕通知(目标对象方法默认不执行的,需要手动执行) * @After - ...

  5. PAT 1083 是否存在相等的差(20)(代码+思路)

    1083 是否存在相等的差(20 分) 给定 N 张卡片,正面分别写上 1.2.--.N,然后全部翻面,洗牌,在背面分别写上 1.2.--.N.将每张牌的正反两面数字相减(大减小),得到 N 个非负差 ...

  6. OpenGLES.gpus_ReturnNotPermittedKillClient

    在iOS中,使用OpenGLES不当引起的crash:“gpus_ReturnNotPermittedKillClient” https://developer.apple.com/library/i ...

  7. ubuntu 'yuan' update

    #  tsinghua  university deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiv ...

  8. C语言基础课第四次作业

    1.实验代码      7-2 打印九九口诀表 (15 分) #include<stdio.h> #include<math.h> int main(void){ int a, ...

  9. PTA第五次作业

    #include<stdio.h> #include<math.h> int main () { int n,m,i,j,a; scanf("%d",&am ...

  10. 2018.07.31 POJ1741Tree(点分治)

    传送门 只是来贴一个点分治的板子(年轻时候写的丑别介意). 代码: #include<cstdio> #include<cstring> #include<algorit ...