MySQL(1)-对表及数据的基本操作

Centos6.8下的MySQL安装方法:

yum install mysql-server mysql mysql-devel

这是一种较为简单的安装方法,但是安装的版本不是最新的,如果要安装最新版本,可以去MySQL官方安装,这里提供地址:https://www.mysql.com/downloads/,安装完毕后可以使用命令rpm -qi mysql-server 查看安装的MySQL版本,在linux下启动关闭MySQL可以使用命令:service mysqld start/stop/etc/init.d/mysqld start/stop,首次连接到MySQL服务器时,需要设置MySQL的登陆密码,即比如:mysqladmin -u root password ‘guochen’ (其中-u表示user),如果不想要每次开启都得手动启动 service mysqld start,那么chkconfig mysqld on即可


/***************************连接MySQL:****************************/
/*本地连接*/
mysql -uroot -p //以root用户验证密码的方式登陆(-p表示password)
/*远程连接*/
mysql -h [ip] -uroot -p

/***************************退出MySQL:****************************/
quit

MySQL配置文件保存的目录在/etc/my.cnf,实际上我们可以在my.cnf这个配置文件中修改MySQL的默认保存位置。当新建一个数据库文件,其数据保存在/var/lib/mysql/目录下,比如一些数据库信息,表信息等等。MySQL的日志文件在:/var/log/mysqld.log下。MySQL支持网络服务,默认为TCP服务,绑定的默认端口为3306,可以通过端口连接到MySQL服务。

SQL语句分类:

1) Data Definition Language(DDL)
CREATE-在数据库中创建对象
ALTER-修改数据库结构
DROP-删除对象
RENAME-重命名对象//错误

2) Data Manipulation Language(DML)
SELECT-从数据库中获取数据
INSERT-向一个表中插入数据
UPDATE-更新一个表中的已有数据
DELETE-删除表中数据

3) Data Control Language(DCL)
GRANT-赋予一个用户对数据库或数据表等的指定权限
REVOKE-删除一个用户对数据库或数据表等的指定权限

4) Transacion Control(TCL)
COMMIT-保存数据操作
SAYEPOINT-为方便rollback标记一个事务点
ROLLBACK-从最后一次COMMIT中恢复到提交前状态

初识SQL语句:

SHOW DATABASES;//查看数据库
SHOW TABLES;//查看表
SHOW TABLES FROM [数据库名];
USE [数据库];//选择数据库
SELECT VERSION();//查看数据库版本
SELECT CURRENT_DATE();//查看当前粗略时间
SELECT NOW();//查看当前精确时间

/*创建数据库*/
CREATE DATABASES [要创建的数据库名称];
/*删除数据库*/
DROP DATABASES [要删除的数据库名称];

/*常用数据类型(各个数据库支持)*/
INTEGER(SIZE) SMALLINT(SIZE) TINYINT(SIZE) //存储整数数据
DECIMAL(SIZE, d) NUMERIC(SIZE, d) //存储浮点数数据
CHAR(SIZE) //存储固定长度字符串
VARCHAR(SIZE) //存储可变长度字符串
DATE(yyyymmdd) //存储日期

/****************************创建/删除表*****************************/
/*创建表*/
CREATE TABLE [表名](
    [属性名] [数据类型] NOT NULL;//以后用SELECT VALUES()时,该字段非空
    [属性名] [数据类型] (NULL);//NULL可写可不写
    ...
    [属性名] [数据类型];
)
/*查看表属性*/
DESCRIBE [表名];//或者用DESC [表名];查看表结构,属性等等
或
SHOW COLUMNS FROM [表名];
/*删除表*/
DROP TABLE [表名];//删除表


/******************************修改表*******************************/
/*重命名表名:*/
ALTER TABLE ic_course RENAME course;//无法重命名库,但可以重命名表
/*向表中添加一列:*/
ALTER TABLE ic_course ADD [COLUMN] link varchar(100) [FIRST | AFTER [属性名]];//FIRST指定插入首列 AFTER指定插入到指定的属性名后
/*向表中添加多列:*/
ALTER TABLE ic_course ADD [COLUMN] ([属性名1] [数据类型], [属性名2] [数据类型], ...)//添加多列与添加单列的区别就是添加多列则不能指定列顺序
/*删除表中一列:*/
ALTER TABLE ic_course DROP [COLUMN] link;//添加和删除语句中的COLUMN可加可不加,建议加上
/*修改一个列的数据类型:*/
ALTER TABLE ic_course MODIFY teacher varchar(100);
/*修改一个列的字段为空*/
ALTER TABLE ic_course MODIFY teacher varchar(100) NULL; 
/*重命名一个列:*/
ALTER TABLE ic_course CHANGE COLUMN teacher lecture varchar(100);   //将teacher列重命名为lecture,并声明数据类型为varchar(100).


/***************************向表中插入数据***************************/
INSERT INTO [表名] VALUES(值1,值2,...);
或
INSERT INTO [表名](列1,列2..) VALUES(值1,值2,...);    //也就是说第一种插入是对应所有属性插入,第二种则选择性的插入.

ps:如果表中有一列比如值1的属性为AUTO_INCREMENT,即不需要我们为其插入的数据,我们可以INSERT INTO [表名] VALUES(NULL/DEFAULT, 值2, 值3...);把值1设置为NULL或DEFAULT,系统会自动插入

INSERT INTO [表名] SET (列1)=值1, (列2)=值2, (列3)=值3, ..; //区别于上面两种插入,这种插入每次只能插入一条记录
INSERT INTO [表名] SELECT [属性] FROM [表名] WHERE [条件];      //可以将我们查询的结果写入到数据表中

ps:
INSERT INTO test(age) SELECT age FROM student WHERE id > 30;    //如果test后未指定age,那么在SELECT的时候也应该对应为*,而非指定一个特定属性
INSERT INTO tdb_goods_cates(cates_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_cate; 

/*************************查询/删除/更新数据**************************/
/*查询数据*/
SELECT [DISTINCT] [列1,列2,...] FROM [表名];
或
SELECT [DISTINCT] * FROM [表名];  //DISTINCT参数表示返回的结果唯一化(去掉重复的),该参数根据个人需要可有可无
SELECT [属性1] FROM [表名] GROUP BY [属性1]; //对属性1进行分组,类似于去掉重复然后输出查询结果

SELECT * FROM [表名] WHERE [条件1] AND [条件2];
SELECT * FROM [表名] WHERE [条件1] OR [条件2];

SELECT * FROM [表名] ORDER BY [列名];   //对某列由小到大排序输出结果
SELECT * FROM [表名] ORDER BY [列名] DESC;  //对某列由大到小排序输出结果

/*按条件查询*/
SELECT [列名] FROM [表名] WHERE [列] [运算符] [值];
ps:SELECT * FROM course WHERE course_name = 'GNOME';
运算符:
=           [等于]
<>          [不等于]
>           [大于]
<           [小于]
>=          [大于等于]
<=          [小于等于]
BETWEEN     [在某范围内]
LIKE        [搜索某种模式]

/*删除数据:*/
DELETE FROM [表名] WHERE [列] [运算符] [值];
或
DELETE FROM [表名];   //删除整个表的数据

/*更新一条记录*/
UPDATE [表名] SET [列名] = [新值] WHERE [列名] = [值];

ps:UPDATE course SET id = 3 WHERE course_name = 'sjjg';
一般情况下WHERE后的判定条件是唯一记录的,不能说筛选出多条记录,然后多条记录的某一个数据都发生改变.比如上面这个例子实际上不合理,因为可能一个数据库中有不同老师的sjjg,所以一般表中的id是唯一确认的,就是用来放在WHERE语句中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值