mysql主码列允许null_Mysql基础知识1

数据类型这里不再一一叙述,可参见这篇博客:

数据库常用命令:

1.启动MySQL服务器

net start mysql

2.断开Mysql服务器

net stop mysql

3.连接mysql服务器

格式: mysql -h 主机地址 -u 用户名 -p 用户密码

-P+端口号,mysql默认端口是3306,Oracal是1521,SQL Server是1433,Db2是5000

4.断开mysql服务器

quit

或者exit

或者\q

5.查询mysql中支持的存储引擎

show engines;

或者show variables like ‘have%’;

show engines得到结果中,字段 Support为:Default表示默认存储引擎 ,MySQL 默认引擎为InnoDB.

修改默认引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句,重启mysql服务器

常见引擎:

InnoDB存储引擎:优势在于提供了良好的事务管理、崩溃修复能力和并发控制。缺点是其读写效率稍差,占用的数据空间相对较大。

MyISAM存储引擎:优势在于占用空间小,处理速度快,主要用于管理非事务表,它提供高速存储和检索,以及全文的搜索能力。缺点是不支持事务的完整性和并发性。

MEMORY存储引擎:优势在于出发点是速度,处理速度非常快,但数据易丢失,生命周期短,不支持varchar、blob和text数据类型。

6.数据库的操作

创建:create database 数据库名;

查看:show databases;

选择数据库:use 数据库名;

删除数据库:drop database 数据库名;

修改数据库编码:alter database 数据库名 CHARACTER SET utf8

查看当前数据库的编码:show variables like ‘character_set_database’;

修改数据库密码格式:mysqladmin -u用户名 -p旧密码 password 新密码

例:给root加个密码ab12。首先在DOS下进入目录mysql bin,然后键入以下命令:

mysqladmin -uroot -password ab12

注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

例:再将root的密码改为djg345。

mysqladmin -uroot -pab12 password djg345

数据库的备份与恢复:

BBjE3m.jpg

BBjE3m.jpg

SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

数据库表的操作DDL(Data Definition Language)

1、创建表

create table 表名 (column_name column_type not null,…)

create table语句的属性说明属性说明属性说明column_name字段名Primary key该列是否为主码column_type字段类型AUTO_INCREMNT该列是否自动编号Not null | null该列是否允许为空

创建数据表后,“C:\AppServ\MySQL\data\数据库名\”中自动创建对应表文件(“表名.frm”,“表名.MYD”,“表名.MYI”)

2、查看数据库中的表

show tables;

3、查看数据库中所有的表

show tables;

4、查看数据表结构

describe 表名;

5、删除指定数据表

drop table 表名;

6、修改数据表结构

ALTER TABLE tabname ADD constraint PK_NAME PRIMARY KEY (colname) 说明:更改表得的定义把某个栏位设为主键,PK_NAME为主键的名字。

ALTER TABLE tab_name DROP PRIMARY KEY (col_name) 说明:把主键的定义删除

alter table tab_name add col_name varchar(20); //在tab_name表中增加一个名为col_name的字段且类型为varchar(20)

alter table tab_name drop col_name //在tab_name中将col_name字段删除

alter table tab_name modify col_name varchar(40) not null //修改字段属性,注若加上not null则要求原字段下没有数据SQL Server200下的写法是:Alter Table table_name Alter Column col_name varchar(30) not null;

如何修改表名:alter table tab_name rename to new_tab_name

如何修改字段名:alter table tab_name change old_col new_col varchar(40); //必须为当前字段指定数据类型等属性,否则不能修改

create table new_tab_name like old_tab_name //用一个已存在的表来建新表,但不包含旧表的数据

数据操纵语言DML( Data Manipulation Language)

删除表中数据命令:delete from 表名 where 表达式

修改表中数据:update 表名 set 字段=新值,… where 条件

插入数据:insert into [( [,.. ])] values ( 值1 )[, ( 值n )]

例:INSERT INTO table_name (id, username, password, time, number, content) VALUES (, abc, 123456,2007-08-06 14:32:12, 23.41, hello world);

数据控制语言DCL(Data Control Language)

一个项目创建一个用户,一个项目对应的数据库只有一个。

这个用户只能对这个数据库有权限,其他数据库你就操作不了。

1.创建用户

create user 用户名@ip地址 identified BY ‘密码’

用户只能在指定的ip地址上登录

create user 用户名@’%’ identified BY ‘密码’

用户只能在任意ip地址上登录

2.给用户授权

grant 权限1,权限2….权限n on 数据库.* to 用户名@ip地址

给用户分配指定数据库上的指定权限

权限处可以填:create,alter,drop,insert,updata 等

其中grant all on 数据库.* to 用户名@ip地址 表名给用户分派指定数据库上打所有权限

3.撤销授权

remove 权限1,权限2….权限n on 数据库.* to 用户名@ip地址

撤销指定权限

4.查看权限

show grants for 用户名@ip地址

5.删除用户

drop user 用户名@ip地址

6.查看授予了哪些用户权限

SELECT DISTINCT CONCAT(‘User: ”’,user,”’@”’,host,”’;’) AS query FROM mysql.user;

可以显示授权了哪些用户

数据查询语言DQL(Data Query Language SELECT )

1.查询所有列

select * from 表名;

2.查询指定列

select username,userAccout from 表名;

3.完全重复的记录只输出一次

使用关键字distinct

select distinct * from table_name;

4.转换null值

有时需要把null转换成其他值,例如输出salary时,当salary为空时,应当为0

使用关键字ifnull

select ifnull(salary,0) from table_name;

5.别名as(可以省略)

当使用列运算时,查询出的结果集中的列名称不好看,这时候需要用到别名

使用

例如select concat(‘我叫’,username,’我的爱好是’,hobby) as 个人介绍 from table_name;

6.条件查询

使用where关键字

模糊查询:使用 like关键字

使用in关键字查询id是1或者2的用户信息:select * from table_name where id in(‘1′,’2’);

7.排序

使用关键字order by进行排序,默认为升序,asc是升序,desc是降序

select * from table_name order by id asc;

多列排序:例如当成绩相同时,学号id小的排在前面

select * from student order by score desc,id asc;

8.聚合函数查询

count函数:计算不为空的记录条数,即有效行数

例如 select count(*) from table_name;//查询所有记录条数,除非某条记录值全为null,才会不计入

select count(id) from table_name;//查询id不为空的记录总数

select count(2) from table_name;//查询第二列不为空的记录总数

max函数:查询该列最大值

select max(salary) from table_name;

min函数:查询该列最小值

select min(salary) from table_name;

avg函数:查询平均值

select avg(salary)平均,max(salary)最高工资 from table_name;

sum函数:查询该列值相加总和

9.分组查询

使用关键字group by,使用分组查询时,select后的语句只能是分组依据信息或者聚合函数

select sex,count(*) from table_name group by sex;

10.having关键字

having关键字是用来筛选分组条件的,而where是筛选记录的

select salary from table_name group by salary having salary>2000;

用having就一定要和group by连用,

用group by不一有having (它只是一个筛选条件用的)

11.limit子句

limit用来限定查询结果的起始行,以及总行数

select * from table_name limit 2,3 ;表示查询从第3行开始,一共查询3行

select * from table_name limit 0,4 ;表示查询从第1行开始,一共查询4行

语句书写规范:

select

from

where

group by

having

order by

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值