搜尋
首頁資料庫mysql教程数据库操作_MySQL

数据库操作_MySQL

Jun 01, 2016 pm 01:34 PM
createmysql資料庫操作數據表

bitsCN.com

CREATE TABLE EMP1 AS SELECT * FROM EMP WHERE EMPNO=1

SELECT * INTO NEW_TABLE FROM EMP WHERE EMPNO=1   (IF NEW_TABLE IS EXIST ) 

 

 数据表基本操作

1.create database name; //创建数据库 (create 内部命令)

  mysql>create  database  数据库名;

2.use databasename; //选择数据库 (use内部命令)

  mysql>use  数据库名;

3.drop database name; //直接删除数据库,不提醒 (drop内部命令)

  mysql>drop  database  数据库名;

4.drop table name; // 直接删除表

  mysql>drop  table  表名;

5.create table name; //创建表

  mysql>create  table  表名;

      **前提是先mysql>use数据库名;

6.show databases;//显示所有数据库

  mysql>show  databases;

7.show tables; //显示数据库中的表 (show内部命令)

  mysql>show  tables;

      **提前是先mysql>use数据库名;

8.describe tablename; //显示表的详细描述

  mysql>describe 表名;

9.select version(),current_date; //显示当前mysql版本和当前日期

  mysql>select  version(), current_date;

  mysql>select  version(),

      ->current_date;

  **select 内部命令 

10.mysql>flush privileges ; //刷新数据库

11.mysql实现修改用户密码:

 11.1 update //修改

       shell>mysql -u root -p

     mysql> update mysql.user set password=PASSWORD(’新密码’) where User='root';

     mysql> flush privileges;

     mysql> quit

 11.2 mysqladmin//修改用户密码

     shell>mysqladmin -u root password new_password

 11.3 自己测试未通过

     shell>mysql -u root -p

    mysql>SET PASSWORD FOR root=PASSWORD("root");

12.创建帐号

  mysql> grant all(delete,updatae,create,drop,insert) privileges on *.* to 用户@localhost identified  by  '密码';

13.重命名表:

  mysql > alter table  表1  rename  表2; //把表t1重命名为t2

14.备份数据库

 14.1 导出整个数据库

          mysqldump -u 用户名 -p 数据库名 > 导出的文件名

        mysqldump -u root -p asb >d:/asb.sql

 

 14.2 导出一个表

    mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

mysqldump -u root -p asb yg>d:/yg.sql

 

 14.3 导出一个数据库结构

mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:/wcnc_db.sql

// (-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table)

  mysqldump mysqladmin外部命令

 

 14.4 导入数据库

  /*用source 命令

  */进入mysql数据库控制台,先建立数据库,use数据库

  mysql -u root -p

  mysql>create  数据库名;

  mysql>use 数据库名

  mydql>source d:/数据库名.sql;

 

 14.5 导入表

 // 进入数据库,执行导入操作

      mysql>use数据库名;

      mysql>source d:/表名.sql;

15.将表中记录清空:

  mysql>delete  from 表名;

15.1将表中记录清空:

  mysql>Truncate  tablename;

16.显示表中的记录:

  mysql>select  *  from 表名;

17.一个建库和建表以及插入数据的实例

  Drop  database  if  exists  school;  //如果存在SCHOOL则删除

  create  database  school;  //建立库SCHOOL

  use  school;  //打开库SCHOOL

  create  table  teacher  //建立表TEACHER

  (

  id  int(3)  auto_increment  not  null  primary  key,

  name  char(10)  not null,

  address  varchar(50)  default  '深圳',

  year  date

  );  //建表结束

  //以下为插入字段

  insert into teacher values('','glchengang','深圳一中','1976-10-10');

  insert into teacher values('','jack','深圳一中','1975-12-23');

**注:在建表中

(1) 将ID设为长度为3的数字字段:int(3),并让它每个记录自动加一: auto_increment,

并不能为空:not null,而且让它成为主字段primary key

(2) 将NAME设为长度为10的字符字段

(3) 将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别

呢,只有等以后的文章再说了。

(4) 将YEAR设为日期字段。

如果你在mysql提示符键入上面的命令也可以,但不方便调试。 你可以将以上命令

原样写入一个文本文件中假设为school.sql,然后复制到c:下,并在DOS状态进入目录

mysqlin,然后键入以下命令:

mysql -uroot -p密码

如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你

只要将//的注释去掉即可使用)。

将文本数据转到数据库中

 文本数据应符合的格式:字段数据之间用tab键隔开,null值用来代替。例:

3 rose 深圳二中 1976-10-10

4 mike 深圳一中 1975-12-23

 数据传入命令load data local infile "文件名" into table 表名;

注意:你最好将文件复制到mysqlin目录下,并且要先用use命令选表所在的库。

18.revoke all on database from user

//移除user用户在database数据库上的所有权限 (自己测试未通过)

 

19.连接mysql。

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

20.登录数据库

  mysql-uroot-p;

  mysql-uroot-pnewpassword;

  mysqlmydb-uroot-p;

  mysql mydb -uroot -pnewpassword;

  mydb数据库名

21.刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,   在这里应把匿名帐户删除、root帐户设置密码,可用如下命令进行:

  mysql>use mysql;

 mysql>delete from User where User="";

 mysql>update User set Password=PASSWORD('newpassword') where User='root';

22.新增用户

  格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"

例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:

mysql>grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的MySQL数据库并对你的数据可以为所欲为了,解决办法见例2。

例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MySQL主机上的web页来访问。

mysql>grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";

如果你不想test2有密码,可以再打一个命令将密码消掉。

mysql>grant select,insert,update,delete on mydb.* to test2@localhost identified by "";

下面我们来看看MySQL中有关数据库方面的操作。注意:你必须首先登录到MySQL中,以下操作都是在MySQL的提示符下进行的,而且每个命令以分号结束。 

在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的提高。我们给一个应用中使用的用户赋予最恰当的数据库权限。如一个只进行数据插入的用户不应赋予其删除数据的权限。MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下:

  mysql>grant all on mydb.* to NewUserName@HostName identified by "password";

  mysql>grant usage on *.* to NewUserName@HostName identified by "password";

  mysql>grant select,insert,update on mydb.* to NewUserName@HostName identified by "password";

  mysql>grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password";

23.对常用权限的解释:

   23.1 全局管理权限: 

  FILE:在MySQL服务器上读写文件。 

  PROCESS:显示或杀死属于其它用户的服务线程。 

  RELOAD:重载访问控制表,刷新日志等。 

  SHUTDOWN:关闭MySQL服务。

 23.2 数据库/数据表/数据列权限: 

  Alter:修改已存在的数据表(例如增加/删除列)和索引。 

  Create:建立新的数据库或数据表。 

  Delete:删除表的记录。 

  Drop:删除数据表或数据库。 

  INDEX:建立或删除索引。 

  Insert:增加表的记录。 

  Select:显示/搜索表的记录。 

  Update:修改表中已存在的记录。

 23.3 特别的权限: 

  ALL:允许做任何事(和root一样)。 

  USAGE:只允许登录--其它什么也不允许做。

 

最后给出在RedHat9.0下的MySql操作演示:

选用数据库的root用户登录

  [weiwen@weiwenlinux]$mysql -uroot -p

  Enterpassword:MyPassword

  mysql>create database mydb;

  QueryOK,1rowaffected(0.02sec)

  mysql>use mydb;

  Databasechanged

  mysql>create table TestTable(Idintaut_increment primary key,

  UserNamevarchar(16) not null,

  Address varchar(255));

  QueryOK,0rowsaffected(0.02sec)

  mysql>grant all on mydb.* to test@localhost identified by "test";

  QueryOK,0rowsaffected(0.01sec)

  mysql>quit

  Bye

  [weiwen@weiwenlinux]$mysqlmydb -utest -ptest

其中test.sql是用vi编辑好的SQL脚本,其内容为:

  Insert into TestTable(UserName,Address) values('Tom','shanghai');

  Insert into TestTable(UserName,Address) values('John','beijing');

  select * from TestTable;

运行已经编辑好的SQL脚本可以用source filename或.filename。

以上只是对新手的简单练习,要成为一个数据库好手,当以孜孜不倦地追求知识,不断地思考、尝试、再思考。

24.MySql常用命令总结 

 24.1 使用SHOW语句找出在服务器上当前存在什么数据库: 

  mysql>SHOW DATABASES; 

 24.2 创建一个数据库 

  mysql>Create  DATABASE  数据库名;

 24.3 选择你所创建的数据库 

  mysql>USE 数据库名;(按回车键出现Databasechanged时说明操作成功!) 

 24.4 查看现在的数据库中存在什么表 

  mysql>SHOW TABLES; 

 24.5 创建一个数据库表 

  mysql>Create  TABLE表名(name VARCHAR(20),sex CHAR(1)); 

 24.6 显示表的结构: 

  mysql>DESCRIBE 数据库名;

 24.7 往表中加入记录 

  mysql>insert  into 表名values("hyq","M"); 

 24.8 用文本方式将数据装入数据库表中(例如D:/mysql.txt) 

  mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE表名; 

 24.9 导入.sql文件命令(例如D:/mysql.sql) 

  mysql>use  database; 

  mysql>source  d:/mysql.sql; 

 24.10 删除表 

  mysql>drop  TABLE  表名; 

 24.11 清空表 

  mysql>delete  from  表名; 

 24.12 更新表中数据 

  mysql>update  表名set  sex="f"  where  name='hyq';

 

 

25. --通过伪列rowid查找重复数据

 

select a.* from t_user a where a.rowid!= 

  (select max(rowid) as rid from t_user where a.grpid =grpid and a.uname=uname);

 

delete from t_user a where a.rowid!= 

  (select max(rowid) as rid from t_user where a.grpid =grpid and a.uname=uname);

 

26. 当表中有重复数据(所有字段相同)时,去重:

select distinct * from  表名;

 

27. 根据字段查询表中重复的数据(单一字段):

    select * from表名where 字段名 in (select字段名   from  表名 group by 字段名 having  count(字段名) > 1);

 

28: 删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
       delete from 表名where 字段名  in(select  字段名   from 表名  group   by  字段名   having  count(字段名)> 1)
and rowid not in(select min(rowid) from   表名  group by字段名  having count(字段名)>1);

29:根据字段查表里面重复的多字段数据,并显示重复次数:

    Select 字段名1,字段名2,Count(*)From 表名Group By 字段名1,字段名2 HavingCount(*) > 1

30. 指定查询表中前N行数据:

    select * from表名limit  N;

31.指定查询表中第N行后的M行数据:

    select *from 表名 limit N,M;

32. 复制表结构及数据到新表
CREATE TABLE 新表 SELECT * FROM 旧表;

33. 只复制表结构到新表
CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2
或CREATE TABLE 新表 LIKE 旧表;

34. 1、复制表结构及数据到新表
CREATE TABLE 新表 SELECT * FROM 旧表
这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。
不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易搞错。


2、只复制表结构到新表
CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2
或CREATE TABLE 新表  LIKE 旧表


3、复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表 SELECT * FROM 旧表


4、复制旧表的数据到新表(假设两个表结构不一样)
INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表


5、可以将表1结构复制到表2
SELECT * INTO 表2 FROM 表1 WHERE1=2


6、可以将表1内容全部复制到表2
SELECT * INTO 表2 FROM 表1


7、show create table 旧表;
这样会将旧表的创建命令列出。我们只需要将该命令拷贝出来,更改table的名字,就可以建立一个完全一样的表


8、mysqldump
用mysqldump将表dump出来,改名字后再导回去或者直接在命令行中运行

35. 把时间更新成为当前系统时间

Update 表名set 时间字段=now();

 

bitsCN.com
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
解釋InnoDB緩衝池及其對性能的重要性。解釋InnoDB緩衝池及其對性能的重要性。Apr 19, 2025 am 12:24 AM

InnoDBBufferPool通過緩存數據和索引頁來減少磁盤I/O,提升數據庫性能。其工作原理包括:1.數據讀取:從BufferPool中讀取數據;2.數據寫入:修改數據後寫入BufferPool並定期刷新到磁盤;3.緩存管理:使用LRU算法管理緩存頁;4.預讀機制:提前加載相鄰數據頁。通過調整BufferPool大小和使用多個實例,可以優化數據庫性能。

MySQL與其他編程語言:一種比較MySQL與其他編程語言:一種比較Apr 19, 2025 am 12:22 AM

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。MySQL以其高性能、可扩展性和跨平台支持著称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

學習MySQL:新用戶的分步指南學習MySQL:新用戶的分步指南Apr 19, 2025 am 12:19 AM

MySQL值得學習,因為它是強大的開源數據庫管理系統,適用於數據存儲、管理和分析。 1)MySQL是關係型數據庫,使用SQL操作數據,適合結構化數據管理。 2)SQL語言是與MySQL交互的關鍵,支持CRUD操作。 3)MySQL的工作原理包括客戶端/服務器架構、存儲引擎和查詢優化器。 4)基本用法包括創建數據庫和表,高級用法涉及使用JOIN連接表。 5)常見錯誤包括語法錯誤和權限問題,調試技巧包括檢查語法和使用EXPLAIN命令。 6)性能優化涉及使用索引、優化SQL語句和定期維護數據庫。

MySQL:初學者的基本技能MySQL:初學者的基本技能Apr 18, 2025 am 12:24 AM

MySQL適合初學者學習數據庫技能。 1.安裝MySQL服務器和客戶端工具。 2.理解基本SQL查詢,如SELECT。 3.掌握數據操作:創建表、插入、更新、刪除數據。 4.學習高級技巧:子查詢和窗口函數。 5.調試和優化:檢查語法、使用索引、避免SELECT*,並使用LIMIT。

MySQL:結構化數據和關係數據庫MySQL:結構化數據和關係數據庫Apr 18, 2025 am 12:22 AM

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

MySQL:解釋的關鍵功能和功能MySQL:解釋的關鍵功能和功能Apr 18, 2025 am 12:17 AM

MySQL是一個開源的關係型數據庫管理系統,廣泛應用於Web開發。它的關鍵特性包括:1.支持多種存儲引擎,如InnoDB和MyISAM,適用於不同場景;2.提供主從復制功能,利於負載均衡和數據備份;3.通過查詢優化和索引使用提高查詢效率。

SQL的目的:與MySQL數據庫進行交互SQL的目的:與MySQL數據庫進行交互Apr 18, 2025 am 12:12 AM

SQL用於與MySQL數據庫交互,實現數據的增、刪、改、查及數據庫設計。 1)SQL通過SELECT、INSERT、UPDATE、DELETE語句進行數據操作;2)使用CREATE、ALTER、DROP語句進行數據庫設計和管理;3)複雜查詢和數據分析通過SQL實現,提升業務決策效率。

初學者的MySQL:開始數據庫管理初學者的MySQL:開始數據庫管理Apr 18, 2025 am 12:10 AM

MySQL的基本操作包括創建數據庫、表格,及使用SQL進行數據的CRUD操作。 1.創建數據庫:CREATEDATABASEmy_first_db;2.創建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入數據:INSERTINTObooks(title,author,published_year)VA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。